摘要: YEAH DONG DONG终于过了。这样思考,首先,要把所有素数求出来是不可能的。注意到L,R的差仅一百万,那么就可以只求这个范围内的素数了。而筛选范围内的素数,就可以用上一篇的方法,使用若n为合数,则必有素因子在sqrt(n)中。在筛选范围内的素数2了一次,直接判断每个数是否素数,TLE。。。#... 阅读全文
posted @ 2014-08-27 23:38 chenjunjie1994 阅读(140) 评论(0) 推荐(0) 编辑
摘要: n最大为2000000000(不知为什么OJ上是1000),若为判断2000000000是素数,则必有一个素数在sqrt(n)内,求出这个范围 的所有素数,其比最大数据小的n'的sqrt(n')也在这个范围 内。#include #include #include #include #include... 阅读全文
posted @ 2014-08-27 20:47 chenjunjie1994 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 水,用来熟悉内容#include #include #include #include #include using namespace std;const int Max=10050;bool prime[Max+10];int main(){ memset(prime,true,sizeof(p... 阅读全文
posted @ 2014-08-27 20:26 chenjunjie1994 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 其实就是筛选素数。如,若能被2是质数,则2的倍数全是合数。如此循环。#include #include #include #include #include using namespace std;const int Max=(1<<24);bool prime[Max+10];bool judge... 阅读全文
posted @ 2014-08-27 19:56 chenjunjie1994 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 可以用素数定理来解决。素数定理:小于n的素数个数记为p(n),则随着n的增长,p(n)/(n/ln(n))=1。#include #include #include #include using namespace std;int main(){ double n; while(scanf("%lf... 阅读全文
posted @ 2014-08-27 19:25 chenjunjie1994 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 其实同POJ 1061#include #include #include #include using namespace std;long long gcd(long long a,long long b){ if(b==0) return a; return gcd(b,a%b);}void... 阅读全文
posted @ 2014-08-27 15:17 chenjunjie1994 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 胡乱写一下,竟然是一次同余方程的内容。设a=n-m; b=L; d=x-y; 得ax+by=d然后,根定理,方程有解必须gcd(a,b)|d。确定有解后,两边除以gcd(a,b); 此时gcd(a',b')=1;使用EXGCD求出为1的解后再乘上d/gcd(a,b)。但要求最小解,就尽可能的把ax的... 阅读全文
posted @ 2014-08-27 14:46 chenjunjie1994 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 水#include #include #include using namespace std;long long gcd(long long a,long long b){ if(b==0) return a; return gcd(b,a%b);}int main(){ long long a,... 阅读全文
posted @ 2014-08-27 09:55 chenjunjie1994 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 刚开始,做了水题#include #include #include using namespace std;int main(){ int n; int a31,a32,a41,a42,a121,a122,ans3,ans4,ans12; while(scanf("%d",&n)!=EOF){ ... 阅读全文
posted @ 2014-08-27 09:38 chenjunjie1994 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 直接枚举就可以了。#include #include #include #include using namespace std;int a,b;vector ans;int main(){ while(scanf("%d%d",&a,&b)!=EOF){ if(a==0&&b==0) break... 阅读全文
posted @ 2014-08-27 09:25 chenjunjie1994 阅读(122) 评论(0) 推荐(0) 编辑