您的位置:首页 > 其它

poj(2635 大数取模)

2012-08-23 14:27 218 查看
#include<stdio.h>  //注意两位的数 例如 14  35

#include<string.h>

#define N 1000006

char str[10000];

int prim
;

void prime()

{

 int i,j;

 memset(prim,0,sizeof(prim));

 for(i=2;i*i<=N;i++)

 {

  if(!prim[i])

  for(j=2*i;j<N;j+=i)

   prim[j]=1;

 }

  return;

}

int main()

{

 int len,i,flag,sum,j;

 prime();

 /*for(i=2;i<1000006;i++)

 if(!prim[i])

 printf("%d ",i);

 */

 int p,x,m;

 while(scanf("%s %d",&str,&p)!=EOF)

 {

  len=strlen(str);

  

  if(str[0]=='0' &&  len==1 && p==0)

   break;

  

       

  if(len%3==1)

   m=str[0]-'0';

  else  if(len%3==2)

   m=10*(str[0]-'0')+str[1]-'0';

        else

      m=0;

  x=len%3;

  flag=0;

  for(j=2;j<N;j++)

  {

   if(!prim[j] && !flag)

   {

    sum=m;

    for(i=x;i<len && !flag;i+=3)

    {

     sum=(1000*sum+100*(str[i]-'0')+10*(str[i+1]-'0')+str[i+2]-'0')%j;

    }

                if(len<3)

     sum=sum%j;

                if(sum==0)

    {

     flag=j;

    }

   }

  }

      if(flag && flag<p)//

    printf("BAD %d\n",flag);

   else

    printf("GOOD\n");

   

   

 }

 return 0;

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