#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[101];
int num[102]; ///最长只有102位
int main()
{
memset(num,0,sizeof(num));
while(~scanf("%s",a)&&strcmp(a,"0")) ///这里太坑了,之前只判断 a[0] 一直都是错的....有前导0
{
int len=strlen(a);
for(int i=0;i<len;i++)
num[i]+=a[len-1-i]-'0';
}
for(int i=0;i<=100;i++)
if(num[i]>=10) num[i+1]+=num[i]/10,num[i]%=10;
/// 统一进位,i=101 不需要进位,不会超过 9,用 if 即可 虽然效果和 while 一样
int i=101;
while(num[i]==0)
i--; /// 之前有全部置 0
for(int j=i;j>=0;j--)
printf("%d",num[j]); /// 逆序输出
puts("");
return 0;
}
poj1503 大数相加
于 2015-05-23 17:28:03 首次发布