Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
老是wa,哪位大牛帮我看看,或是给几个数据#include"stdio.h" #include"string.h" #include"math.h" bool hash[44723]={0},flag,have[1000]; int prime[5000],top,icase=0; __int64 f[1000],top1,w[1000],top2,q,p; __int64 gcd(__int64 a,int b) { if(a%8==0)return 8; if(a%4==0)return 4; if(a%2==0)return 2; return 1; } unsigned __int64 pro(unsigned __int64 x,unsigned __int64 y,unsigned __int64 n) { unsigned __int64 ret,tmp; int i; if(n<=1000000000) return (x*y)%n; else if(x<=10000000||y<=10000000) return (x*y)%n; else { tmp=(y/100*x)%n; ret=0; for(i=0;i<100;i++) ret=(ret+tmp)%n; tmp=y%100; ret=(ret+(tmp*x)%n)%n; } return ret; } __int64 phi(__int64 res) { int i,j,k; __int64 anw=res; for(i=0;i<top;i++) if(res%prime[i]==0) { anw=anw*(prime[i]-1)/prime[i]; while(res%prime[i]==0) res=res/prime[i]; } if(res!=1) anw=anw*(res-1)/res; return anw; } __int64 mod(__int64 a,__int64 b,__int64 m) { __int64 k,res; k=b;res=1; while(k>0) { if(k%2==1) res=pro(res,a,m); a=pro(a,a,m); k=k>>1; } return res; } void solve() { int i,j,k,t; t=sqrt((double)p)+1; top2=0; for(i=1;i<=t;i++) if(p%i==0) { if(mod(10,i,q)==1) w[top2++]=i; if(mod(10,p/i,q)==1) w[top2++]=p/i; } } int main() { int i,j,k,n,m,l; __int64 max; for(i=2;i<=212;i++) if(hash[i]==0) { for(j=2;i*j<=44722;j++) hash[i*j]=1; } for(i=2;i<=44722;i++) if(hash[i]==0) { prime[top++]=i; } while(scanf("%d",&l)&&l) { icase++; if(l%5==0||l%16==0) { printf("Case %d: 0\n",icase); continue; } q=(__int64)l*9; i=gcd(l,8); q=q/i; p=phi(q); flag=1; top2=0; solve(); max=w[0]; for(i=1;i<top2;i++) if(max>w[i])max=w[i]; if(top2==0) printf("Case %d: 0\n",icase); else printf("Case %d: %I64d\n",icase,max); } return 1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator