摘要:
YEAH DONG DONG终于过了。这样思考,首先,要把所有素数求出来是不可能的。注意到L,R的差仅一百万,那么就可以只求这个范围内的素数了。而筛选范围内的素数,就可以用上一篇的方法,使用若n为合数,则必有素因子在sqrt(n)中。在筛选范围内的素数2了一次,直接判断每个数是否素数,TLE。。。#... 阅读全文
摘要:
n最大为2000000000(不知为什么OJ上是1000),若为判断2000000000是素数,则必有一个素数在sqrt(n)内,求出这个范围 的所有素数,其比最大数据小的n'的sqrt(n')也在这个范围 内。#include #include #include #include #include... 阅读全文
摘要:
水,用来熟悉内容#include #include #include #include #include using namespace std;const int Max=10050;bool prime[Max+10];int main(){ memset(prime,true,sizeof(p... 阅读全文
摘要:
其实就是筛选素数。如,若能被2是质数,则2的倍数全是合数。如此循环。#include #include #include #include #include using namespace std;const int Max=(1<<24);bool prime[Max+10];bool judge... 阅读全文
摘要:
可以用素数定理来解决。素数定理:小于n的素数个数记为p(n),则随着n的增长,p(n)/(n/ln(n))=1。#include #include #include #include using namespace std;int main(){ double n; while(scanf("%lf... 阅读全文
摘要:
其实同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... 阅读全文
摘要:
胡乱写一下,竟然是一次同余方程的内容。设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的... 阅读全文
摘要:
水#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,... 阅读全文
摘要:
刚开始,做了水题#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){ ... 阅读全文
摘要:
直接枚举就可以了。#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... 阅读全文