poj2635 The Embarrassed Cryptographer
2014-03-17 19:53
405 查看
我的天~~不算难把,但是有个小细节没考虑好WA很久,那就是,如果在100W的质数表内没找到那个数,应该是输出GOOD的,通过Sample才找到问题
大数(十位进制变千位)+同余模定理+质数快速有效打表(奇数平方递推筛)
用了文件输入输出,赞
大数(十位进制变千位)+同余模定理+质数快速有效打表(奇数平方递推筛)
用了文件输入输出,赞
#include <iostream> #include <string.h> #include <stdlib.h> #include <cstdio> using namespace std; const int N=1010100; int prime ; int pNum=0; int que=0; void FindPrime() { prime[pNum++]=2; for(int i=3;i<=N;i+=2) { bool isprime=true; for(int j=0;prime[j]*prime[j]<=i;j++) { if(!(i%prime[j])) { isprime=false; break; } } if(isprime) prime[pNum++]=i; } } int getMod(int* K,int modthis,int len) { int tmp=0; for(int i=len-1;i>=0;i--) { tmp=(tmp*1000+K[i])%modthis; } return tmp; } void strtointk(char* m,int* K) { int len=strlen(m); int num=0; for(int i=len-1;i>=0;) { for(int j=i-2>=0?i-2:0;j<=i;j++) { num=num*10+m[j]-'0'; } K[que++]=num; num=0; if(i-3>=0) i-=3; else i=-1; } return; } int main() { //freopen("H:\\in.txt","r",stdin); //freopen("H:\\out.txt","w",stdout); FindPrime(); char m[11111]; int n; while(scanf("%s%d",m,&n)) { que=0; bool canget=false; int K[10111]; memset(K,0,sizeof(K)); strtointk(m,K); if(strcmp(m,"0")==0&&n==0) break; for(int i=0;i<pNum&&prime[i]<n;i++) if(getMod(K,prime[i],que)==0) { if(prime[i]<n) { printf("BAD %d\n",prime[i]); canget=true; break; } else { printf("GOOD\n"); canget=true; break; } } if(!canget) { printf("GOOD\n"); } } //fclose(stdin); //fclose(stdout); return 0; }
相关文章推荐
- poj 2635 The Embarrassed Cryptographer
- poj 2635 The Embarrassed Cryptographer(数论)
- poj 2635 The Embarrassed Cryptographer 筛素数+高精度除法
- [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
- poj 2635 The Embarrassed Cryptographer ——高精度取模
- POJ2635 The Embarrassed Cryptographer
- POJ 2635 The Embarrassed Cryptographer
- poj 2635 The Embarrassed Cryptographer
- The Embarrassed Cryptographer--POJ 2635
- POJ 2635 The Embarrassed Cryptographer(JAVA)
- POJ 2635.The Embarrassed Cryptographer
- POJ 2635 The Embarrassed Cryptographer
- POJ 2635 The Embarrassed Cryptographer
- POJ 2635 The Embarrassed Cryptographer 大数取模
- POJ 2635 The Embarrassed Cryptographer
- 【数论】POJ_2635_The Embarrassed Cryptographer
- POJ-2635-The Embarrassed Cryptographer
- POJ 2635 The Embarrassed Cryptographer
- The Embarrassed Cryptographer POJ 2635 数论之高精度求模(同余模定理+千进制)
- POJ 2635 The Embarrassed Cryptographer 高精度取模 + 线性筛