poj 2635 The Embarrassed Cryptographer

高精度+大数同余求模,采用千进制能够AC……

链接http://poj.org/problem?id=2635

 1 #include<iostream>

 2 #include<stdio.h>

 3 #include<algorithm>

 4 #include<vector>

 5 #include<cmath>

 6 #include<iomanip>

 7 #include<string>

 8 using namespace std;

 9 char a[10000];

10 int b[10000],prime[1000101],m;

11 bool f[1000105];

12 void init()

13 {

14     __int64 i,j;

15     m=0;

16     memset(f,0,sizeof(f));

17     for(i=2;i<=1000100;i++)

18     {

19         if(f[i]==0)

20         {

21             prime[m++]=i;

22             for(j=i*i;j<=1000100;j+=i)

23                 f[j]=1;

24         }

25     }

26 }

27 int main()

28 {

29     init();

30     int l,len,i,j,k,t;

31     while(cin>>a>>l&&l)

32     {

33         len=strlen(a);

34         i=len/3;

35         j=len-1;

36         k=0;

37         while(i>0)

38         {

39             b[k++]=((a[j-2]-'0')*10+a[j-1]-'0')*10+a[j]-'0';

40             j-=3;

41             i--;

42         }

43         if(len%3)

44         {

45             t=len%3;

46             if(t==1)

47                 b[k++]=a[0]-'0';

48             else b[k++]=(a[0]-'0')*10+a[1]-'0';

49         }

50         for(i=0;prime[i]<l;i++)

51         {

52             t=0;

53             for(j=k-1;j>=0;j--)

54             {

55                 t=(t*1000+b[j])%prime[i];

56             }

57             if(t==0)

58                 break;

59         }

60         if(prime[i]>=l)

61             cout<<"GOOD"<<endl;

62         else cout<<"BAD "<<prime[i]<<endl;

63     }

64     return 0;

65 }
View Code

 

你可能感兴趣的:(Graph)