大数加法。
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char str[105][105];
int num[105][105];
int sum[105];
int len[105];
int i = 0,maxlen = 0;
memset(num,0,sizeof(num));
memset(sum,0,sizeof(sum));
while(scanf("%s",str[i++]) && str[i-1][0]!='0')
{
}
for(int j = 0 ; j < i ; j++)
{
len[j] = strlen(str[j]);
if(maxlen < len[j])
{
maxlen = len[j];
}
int cnt = 0;
for(int k = len[j] - 1 ; k >=0 ; k--) //翻转,
{
num[j][cnt++] = str[j][k] - '0';
}
}
for(int j = 0 ; j < i ; j++) //相加
{
for(int k = 0 ; k < len[j] ; k++)
{
sum[k] += num[j][k];
}
}
for(int j = 0 ; j < maxlen ; j++) //进位
{
if(sum[j] > 9)
{
sum[j+1] += sum[j]/10;
sum[j] = sum[j]%10;
if(j==maxlen-1)
{
maxlen++;
}
}
}
for(int j = maxlen - 1 ; j >= 0 ; j --) //输出
{
printf("%d",sum[j]);
}
putchar(10);
return 0;
}
//大数加法。