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 |
呜呜,dicuss里的测试数据都过了,还是wrong answer,请大虾帮帮我找找错嘛#include"stdio.h" #include"string.h" #include"math.h" #define M 400 #define N 100 void decimal(char *p,int *n) { int i,j=0,k,t,r; for(i=0;p[i];i++) if(p[i]=='.') break; while(p[j]&&p[j]=='0') j++; if(i==strlen(p)) { for(k=j;p[k];k++) p[k-j]=p[k];*n=0; p[k-j]='\0'; } else { t=strlen(p)-1;r=0; while(t>=0&&p[t]=='0') t--; *n=t-i; for(k=j;k<=t;k++) if(p[k]!='.') {p[r]=p[k];r++;} p[r]='\0'; } } void fun(char *p,long *a1) { int i,j,k,t; t=N-1; j=strlen(p); for(i=j-4;i>=0;i-=4) { for(k=i;k<i+4;k++) a1[t]=a1[t]*10+p[k]-'0'; t--; } if(i!=-4) { for(k=0;k<i+4;k++) a1[t]=a1[t]*10+p[k]-'0'; t--; } } int main() { char s1[M],s2[M],s3[M]; long a1[N],a2[N],a3[N],m,n; int i,j,k,t,j1,j2,n1,n2,r,h,h1,h2; while(scanf("%s%d",s1,&h)!=EOF) { for(i=0;s1[i];i++) s2[i]=s1[i]; s2[i]='\0'; decimal(s1,&n1); i=0;while(s1[i]=='0') i++; if(s1[i]=='\0') { printf("0\n");continue;} h2=h*n1; for(h1=1;h1<h;h1++) { for(i=0;i<N;i++) a1[i]=a2[i]=a3[i]=0; decimal(s1,&n1); fun(s1,&a1[0]); decimal(s2,&n2); fun(s2,&a2[0]); j1=j2=0; while(j1<N&&a1[j1]==0) j1++; while(j2<N&&a2[j2]==0) j2++; for(i=N-1;i>=j1;i--) { for(j=N-1;j>=j2;j--) { k=j+i-N+1; n=a1[i]*a2[j]; while(n!=0) { a3[k]=a3[k]+n%10000; n=n/10000; m=a3[k];k--;t=k; while(m>=10000) { a3[t+1]=m%10000; a3[t]=a3[t]+m/10000; m=a3[t];t--; } } } } k=0; for(i=t+1;i<N;i++) { m=a3[i];j=0; while(m) {j++;m/=10;} if(i==t+1) while(j) { s3[k]=a3[i]/(int)pow((double)10,(double)(j-1))+'0';a3[i]%=(int)pow((double)10,(double)(j-1));k++;j--; } else { for(r=0;r<4-j;r++) s3[k++]='0'; while(j) { s3[k]=a3[i]/(int)pow((double)10,(double)(j-1))+'0';;a3[i]%=(int)pow((double)10,(double)(j-1));k++;j--;} } } s3[k]='\0'; for(i=0;s3[i];i++) s2[i]=s3[i]; s2[i]='\0'; } n=h2; if(h==0) printf("0\n"); else { if(h==1) { fun(s1,&a3[0]);for(i=0;s1[i];i++) s3[i]=s1[i];s3[i]='\0';k=strlen(s1);} if(n>=k) { printf("."); for(i=k;i<n;i++) printf("0"); printf("%s\n",s3); } else if(n!=0) { for(i=0;i<k-n;i++) printf("%c",s3[i]); printf("."); for(i=k-n;i<k;i++) printf("%c",s3[i]); printf("\n"); } else printf("%s\n",s3); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator