描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 210
int main()
{
char a[N],b[N]; //用字符数组存储,便于接收
int ans[N],len_a,len_b,len,temp,i;
gets(a);
gets(b);
len_a = strlen(a);
len_b = strlen(b);
int jinwei=0;
len = len_a>len_b?len_a:len_b;
i=0;
while(i<len)
{
if(i>=len_a)
{
temp = b[len_b-i-1]-'0' + jinwei;
}else if(i>=len_b)
{
temp = a[len_a-i-1]-'0' + jinwei;
}else{
temp = a[len_a-i-1]-'0' + b[len_b-i-1]-'0' + jinwei;
}
ans[i] = temp%10;
jinwei = temp/10;
i++;
}
if(jinwei!=0)
{
ans[len] = jinwei;
}
for(i=len;i>=0;i--)
{
if(ans[i]!=0)
{
break;
}
}
if(i<=0)
{
cout<<0;//全是0的情况输出0
}else
{
for(int j=i;j>=0;j--)//j是第一个不为0的数字下标
{
cout<<ans[j];
}
}
return 0;
}