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 |
why TLE!!!!!#include<stdio.h> #define Max_n 1000000 int N,K; //__int64 Dap,L,Count; int Dap,L,Count; int P[1000000],Pcnt; int A[100],Cnt; void prime() { int i,j,sw; for(i=2; i<=Max_n; i++){ sw=0; for(j=2; j*j<=i; j++){ if(i%j==0){ sw=1; break; } } if(sw==0){ P[Pcnt]=i; Pcnt++; } } } void insubunhae() { int n,i=0,sw=0; n=N; for(;;){ if(i==Pcnt || n==1) break; if(n%P[i]==0){ n/=P[i]; if(sw==0){ A[Cnt]=P[i]; Cnt++; } sw=1; }else{ sw=0; i++; } } } void recall(int cnt, int gop, int use) { if(cnt==Cnt){ if(gop==1) return; if(use%2){ Count+=(L-1)/gop; }else{ Count-=(L-1)/gop; } return; } if(gop*A[cnt]<L){ recall(cnt+1,gop*A[cnt],use+1); } recall(cnt+1,gop,use); } void process() { int st,ed,mid; int i,sw; st=1; ed=2000000000; for(;;){ mid=(st+ed)/2; L=mid; Count=0; recall(0,1,0); if(L-Count<K){ st=mid+1; }else if(L-Count>K){ ed=mid-1; }else{ sw=0; for(i=0; i<Cnt; i++){ if(L%A[i]==0){ sw=1; break; } } if(sw==0){ Dap=L; break; }else{ st=mid+1; } } } } int main() { FILE *fin=fopen("2773.in","r"); FILE *fout=fopen("2773.out","w"); prime(); for(;;){ N=0; fscanf(fin,"%d%d",&N,&K); // scanf("%d%d",&N,&K); if(N==0) break; insubunhae(); process(); fprintf(fout,"%d\n",Dap); // printf("%d\n",Dap); Cnt=0; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator