UVa 424 - Integer Inquiry
2012-04-22 09:58
302 查看
这道题目就是大整数的相加,类似于给你一个很大的数求阶乘,起主导思想是一样的,说不清楚,看代码吧:
#include <stdio.h> #include <string.h> int main() { int i,j,n,m,t,s,flag1,flag2,x,max,k,flag3; char s1[1000]; int a[100][100],b[100000]; int l; flag1=0; for(i=0;i<=99;i++) { for(j=0;j<=99;j++) { a[i][j]=-1; } } max=0; while(scanf("%s",s1)!=EOF) { s=0; l=strlen(s1); if(l==1&&s1[0]=='0') { break; } flag2=0; for(i=l-1;i>=0;i-=4) { t=1; s=0; for(j=1;j<=4&&i-j+1>=0;j++) { s+=(s1[i-j+1]-'0')*t; t*=10; } a[flag1][flag2]=s; flag2+=1; } if(flag2>=max) { max=flag2; } flag1+=1; } x=0; int p=0; for(i=0;i<=99;i++) { b[i]=0; } flag3=0; for(i=0;i<=max-1;i++) { s=0; for(j=0;j<=flag1-1;j++) { if(a[j][i]!=-1) { s+=a[j][i]; } } for(j=x;j<=x;j++) { s=s+p; p=0; if(s>9999) { b[j]+=s%10000; p=s/10000; s=0; x+=1; }else { b[j]+=s; } } flag3+=1; if(i==max-1) { k=x; } x=flag3; } printf("%d",b[k]); for(j=k-1;j>=0;j--) { if(b[j]>999) { ; }else if(b[j]>99) { printf("0"); }else if(b[j]>9) { printf("00"); }else { printf("000"); } printf("%d",b[j]); } printf("\n"); return 0; }
相关文章推荐
- uva 424(Integer Inquiry)高精度大整数加法
- UVA 424 - Integer Inquiry
- UVA 424 - Integer Inquiry
- POJ1503 UVA424 UVALive5399 Integer Inquiry【大数】
- UVA 424 Integer Inquiry
- UVa 424 - Integer Inquiry
- UVA 424 Integer Inquiry
- UVa 424 Integer Inquiry (高精度)
- UVA 424 - Integer Inquiry(大数加法)
- UVA424 - Integer Inquiry
- UVa 424 - Integer Inquiry
- UVA424 - Integer Inquiry
- UVa 424 Integer Inquiry 【大数相加】
- uva 424 Integer Inquiry(高精度加法)
- △UVA424 - Integer Inquiry(大数相加)
- uva 424 - Integer Inquiry
- UVa 424 - Integer Inquiry
- uva 424 Integer Inquiry(字符串,高精度)
- UVA - 424 Integer Inquiry
- UVa 424 Integer Inquiry