数论小专题总结
2014-03-18 09:57
549 查看
(主要是各基本知识点的例题,查缺补漏,希望以后比赛不要有本来应该掌握的知识点,却不知道的情况)
1、一元线性同余方程组的一般性解法(拓展gcd、剩余定理)
View Code
8、欧拉函数的应用 POJ 3696
{参考:http://blog.csdn.net/xieshimao/article/details/6689780}
9、lucas定理 HDU3944
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
相关文章推荐
- 数论专题学习阶段总结
- [kuangbin带你飞]专题十四 数论基础——个人总结
- kuangbin专题十四数论基础总结
- 数论同余专题总结
- 刘汝佳训练指南——数论专题知识点总结:
- C语言高频面试题之sizeof与指针和结构体专题总结
- 链表专题总结
- kuangbin专题三DancingLinks总结
- 逊哥dp专题 总结(普通dp,斜率优化dp,数位dp)
- 数论知识总结
- 【原】Spark学习总结-六个专题
- 并查集专题总结
- noip数论复习总结
- OI数论模板总结
- 原位排序专题总结
- DBGrid、DBGrideh专题总结(来自delphi园地)
- 我的专题文章之一 --对变量的总结
- 【JAVA编码专题】总结
- 总结_六天专题:栈和队列,树,并查集,KMP匹配算法
- 动态规划专题总结