数论
jiangjiashi
这个作者很懒,什么都没留下…
展开
-
青蛙的约会 (P1061)
就是用阿基里德的扩展原理来做。 最终化简为a*x+b*y=c; 要求的是x为整数,y的整数解,当c不能整除gcd(a,b)时,就会"Impossible" 没有学过,所以看了会书也是很难才免强知道了点,自己太 笨! #include #include #include #include #include using namespace std; //原创 2012-08-03 16:40:17 · 476 阅读 · 0 评论 -
(easy) Goldbach's Cnjecture (P2262)
题意: 给定一个数,求其相差最大的两个素数之和为它。 注意:在求prime时,变量i,j要令为long long 不会在i*i时会超过int范围。 #include #include #include #include #include using namespace std; // freopen("C://i.txt","r",stdin); #defi原创 2012-08-03 16:59:05 · 648 阅读 · 0 评论 -
(欧拉函数) Relatives (P2407)
这题从题意可以看出就是求比从1~n - 1从有几个数和n没有公共因子, 通常的算法很简单就能够想到, 我开始也是按通常的做法写了一个, 觉得 可能会TLE, 果不其然, 后来上网查了一下, 知道了欧拉函数, 这个就是求比n小的数中与n互质(也就是没有公共因子)的算法, 看来还是那些经典的算法效率比较高, 比纯用暴力试探高多了... 欧拉函数描述如下: 利用欧拉函数和它本身不同转载 2012-08-03 17:36:08 · 1256 阅读 · 0 评论 -
(公约数问题) Xenia and Hamming (356B)
题意:给出两个字符串(等长),求出其相同位置字符不同的个数。 其中:字符串是一个重复的字符串,先给出一个比较短的,然后再重复N次。 解法:自己体会吧 #include #include #include using namespace std; #define N 1000010 int sum[N][26]={0}; char a[N],b[N]; in原创 2013-10-17 10:10:18 · 1600 阅读 · 0 评论 -
CD无平方数
思路:就是会有重复的地方,把重复的地方找出来,相加或相减 , #include using namespace std; #define N 1010010 long long p[N]={0}; long long n; long long ans; int num=0; void dfs(long long s,int j,int step) { if (s*p[原创 2013-10-28 21:35:05 · 710 阅读 · 0 评论 -
(eular)最大公约(1552)
先把该数的因子找出来。 对于每个因子d,找出n/d的互素的个数,以保证其没有重复相加 #include #include #include using namespace std; int n; int eular(int n) { int ret=1,i; for (i=2;i*i<=n;i++) if (n%i==0) { n/=i,ret*=i-1原创 2013-10-29 10:47:01 · 572 阅读 · 0 评论