//POJ_2635
#include <stdio.h>
#include <string.h>
#define N 1000100
int p[1000100],top=0;
int f()
{
p[++top]=2;
for(int i=3; i<=N; i+=2)
{
int flag=1;
for(int j=1; p[j]*p[j]<=i; j++)
{
if(i%p[j]==0)
{
flag=0;
break;
}
}
if(flag)
p[++top]=i;
}
}
int main()
{
int l;
char k[110];
int a[110],t[5];
f();
while(~scanf("%s%d",k,&l)&&strcmp(k,"0")!=0&&l)
{
int len=strlen(k);
int c=0,num=0,cnt=0;
for(int i=len-1; i>=0; i--)
{
c++;
t[c]=k[i]-'0';
if(c==3||i==0)
{
a[++cnt]=t[3]*100+t[2]*10+t[1];
num=0;
c=0;
t[1]=t[2]=t[3]=0;
}
}
int flag=1,index=-1;
for(int i=1; i<=top; i++)
{
if(p[i]>=l)//不能相等,
break;
int m=0;
for(int j=cnt; j>=1; j--)
m=(m*1000+a[j])%p[i];
if(m==0)
{
flag=0;
index=i;
break;
}
}
if(flag)
printf("GOOD\n");
else printf("BAD %d\n",p[index]);
}
}
【数论】POJ_2635_The Embarrassed Cryptographer
最新推荐文章于 2017-01-15 14:32:47 发布