大数
#include<stdio.h> #include<string.h> int a[2000],c[2000],d[2000]; int main() { char s[12]; int i,j,k,n,x,y,lena,lenc,lend,op; while(scanf("%s%d",s,&n)!=EOF) { memset(a,0,sizeof(a)); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); op=5; for(i=0;i<6;i++) { if(s[i]=='.')break; op--; } if(op<0)op=0; k=0; for(j=5;j>=0;j--) { if(j==i)continue; a[k]=s[j]-'0'; c[k]=a[k++]; } lena=lenc=k; for(i=2;i<=n;i++) { for(j=0;j<lena;j++) { k=0; for(x=0;x<lenc;x++) { d[j+x]+=a[j]*c[x]+k; k=d[j+x]/10; d[j+x]=d[j+x]%10; } if(k>0) {d[j+x]=k;lend=j+x+1;} else lend=j+x; } for(j=0;j<lend;j++) {c[j]=d[j];d[j]=0;} lenc=lend;lend=0; } op=op*n; for(i=lenc-1;i>op-1;i--) { if(c[i]!=0)break; lenc--; } for(i=0;i<op;i++) { if(c[i]!=0)break; } k=i; for(i=lenc-1;i>op-1;i--) printf("%d",c[i]); if(k<op) printf("."); for(;i>=k;i--) printf("%d",c[i]); if(lenc==k)printf("0"); printf("\n"); } return 0; }