POJ 1001 大数
发布时间:2020-12-14 03:34:48 所属栏目:大数据 来源:网络整理
导读:无聊水一道。。大数模拟 各种坑爹测试数据 #include "stdio.h"#include "string.h"int a[10010],b[10010],c[10010];int main(){ int w,i,j,m,dian,k,le; char str[1001]; while (scanf("%s%d",str,w)!=EOF) { getchar(); if (w==0) { printf("1n"); continu
无聊水一道。。大数模拟 各种坑爹测试数据 #include "stdio.h" #include "string.h" int a[10010],b[10010],c[10010]; int main() { int w,i,j,m,dian,k,le; char str[1001]; while (scanf("%s%d",&str,&w)!=EOF) { getchar(); if (w==0) { printf("1n"); continue; } memset(a,sizeof(a)); memset(b,sizeof(b)); memset(c,sizeof(c)); le=strlen(str); m=1; dian=-1; for (i=le-1;i>=0;i--) { if (str[i]=='.') dian=m-1; else { a[m]=str[i]-'0'; m++; } } a[0]=m-1; while (a[a[0]]==0) {a[0]--; if (a[0]==0) break;} if (a[0]==0) { printf("0n"); continue; } for (i=0;i<=a[0];i++) b[i]=a[i]; for (i=2;i<=w;i++) { memset(c,sizeof(c)); for (j=1;j<=a[0];j++) for (k=1;k<=b[0];k++) c[j+k-1]+=a[j]*b[k]; c[0]=a[0]+b[0]-1; for (j=1;j<=c[0];j++) { c[j+1]+=c[j]/10; c[j]%=10; } if (c[c[0]+1]!=0) c[0]++; while (c[c[0]]==0) { c[0]--; } for (j=0;j<=c[0];j++) a[j]=c[j]; } if (dian==-1) { for (i=a[0];i>=1;i--) printf("%d",a[i]); printf("n"); } else { dian*=w; if (a[0]<=dian) { printf("."); for (i=1;i<=dian-a[0];i++) printf("0"); k=1; while(a[k]==0) k++; for (i=a[0];i>=k;i--) printf("%d",a[i]); printf("n"); } else { for (i=a[0];i>dian;i--) printf("%d",a[i]); k=1; while(a[k]==0) k++; if (dian>=k) printf("."); for (i=dian;i>=k;i--) printf("%d",a[i]); printf("n"); } } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |