POJ 2635 The Embarrassed Cryptographer

来源:互联网 发布:openstack源码大约多少 编辑:程序博客网 时间:2024/05/15 04:08
//Time 907ms, Memory 4480K
#include<iostream>#include<string>using namespace std;int vis[1000010],prime[80000];int main(){int i,j,k=0,l,a[35],t;char s[105];memset(vis,0,sizeof(vis));memset(s,0,sizeof(s));for(i=2;i*i<1000010;i++) if(!vis[i]){for(j=i*i;j<1000010;j+=i) vis[j]=1;}for(i=2;i<1000010;i++) if(!vis[i])prime[k++]=i;while(cin>>s>>l && ((strlen(s)!=1 || s[0]!='0') || l)){j=0;i=strlen(s);for(i--;;i-=3){if(i==-1) break;else if(i==0){a[j++]=s[i]-48;break;}else if(i==1){a[j++]=(s[i-1]-48)*10+s[i]-48;break;}else a[j++]=(s[i-2]-48)*100+(s[i-1]-48)*10+s[i]-48;}for(i=0;prime[i]<l;i++){t=0;for(k=j-1;k>=0;k--)t=(t*1000+a[k])%prime[i];if(!t) break;}if(prime[i]<l) cout<<"BAD "<<prime[i]<<endl;else cout<<"GOOD"<<endl;memset(s,0,sizeof(s));}return 0;}

原创粉丝点击