您的位置:首页 > 其它

poj2635

2015-11-03 00:04 225 查看
#include <iostream>

#include <cmath>

#include <algorithm>

#include <cstring>

#include <cstdio>

using namespace std;

#define ran 1000100

int prime[ran+1];

bool p[ran+1];

char k[110];

int kt[10000];

int l;

void getprime()

{

    int cnt=0;

    memset(p,1,sizeof(p));

    for(int i=2;i<=ran;i++)

     {

         if(p[i])

         {

            prime[cnt++]=i;

            for(int j=i*2;j<=ran;j+=i)

         {

            p[j]=0;

         }

         }

     }

}

bool mod(int x,int n)

{

    int sq=0;

    for(int i=n-1;i>=0;i--)

        sq=(sq*1000+kt[i])%x;

    return sq==0;

}

int main()

{

    getprime();

    while(scanf("%s%d",k,&l),l)

    {

        memset(kt,0,sizeof(kt));

        int len=strlen(k);

       for(int i=0;i<len;i++)

       {

           int pk=(len-i+2)/3-1;

           kt[pk]=kt[pk]*10+(k[i]-'0');

       }

       int lenkt=(len+2)/3;

       bool flag=true;

       int i=0;

           while(prime[i]<l)

           {

                if(mod(prime[i],lenkt))

             {

                 flag=false;

                  printf("BAD %d\n",prime[i]);

                break;

            }

            i++;

           }

        if(flag)

            puts("GOOD");

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: