您的位置:首页 > 其它

POJ 2635 The Embarrassed Cryptographer

2013-05-19 09:09 447 查看
//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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: