您的位置:首页 > 其它

数论小专题总结

2014-03-18 09:57 549 查看
(主要是各基本知识点的例题,查缺补漏,希望以后比赛不要有本来应该掌握的知识点,却不知道的情况)

1、一元线性同余方程组的一般性解法(拓展gcd、剩余定理)

/*fzu1669
毕达哥拉斯三元组的应用

本原毕达哥拉斯定理:
x=m^2-n^2;
y=2mn;
z=m^2+n^2;
m>n,n奇数m偶数或者n偶数m奇数
注意是本原,即(x,y,z)==1,可通过计算本原加上筛选求得一定范围内的所有(x,y,z)

题意:
a+b+c<=L,
a,b是直角边,c是斜边
给定L ,求满足上式的三角形的个数
思路:通过上面的定理,枚举出m,n(需满足gcd(n,m)==1),找到本原,筛选可得解
具体实现:假设m>n,则m<sqrt(L),再枚举比m小的n即可,因为L≤2000000,m<1000,单次最多不会超过500000左右
*/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <cmath>
#define LL long long

using namespace std;
int L;
int gcd(int a,int b){
if (b==0) return a;
else return gcd(b,a%b);
}
int main(){
while(cin>>L){
int up=(int)(sqrt(L+0.0));
int ans=0;
for(int m=1;m<=up;m++){
for(int n=m-1;n>=1;n--){
if ((m+n)%2==0 || gcd(m,n)!=1) continue;
int x=m*m-n*n;
int y=2*n*m;
int z=m*m+n*n;
ans+=L/(x+y+z);
}
}
cout<<ans<<endl;
}
return 0;
}


View Code
8、欧拉函数的应用 POJ 3696

{参考:http://blog.csdn.net/xieshimao/article/details/6689780}

9、lucas定理 HDU3944
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: