问题描述
计算两个非负整数A,B的和。不过这一次有些特殊A,B可能会很大。
输入格式
第一行输入一个非负整数A。
第二行输入一个非负整数B。
A,B的长度不大于 500。
输出格式
输出A+B的值。不要有多余的前导零。
样例输入
123
1234
样例输出
1357
AC代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{ int m=0;
int n=0;
int u=0;
int a[600];
int b[600];
int ans[600];
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
memset(ans,0,sizeof(a));
for(;;)
{
char q;
scanf("%c",&q);
if(q==10)break;
a[m]=(int)q-'0';
m++;
}
for(;;)
{
char q;
scanf("%c",&q);
if(q==10)break;
b[n]=(int)q-'0';
n++;
}
int ma=max(m,n);
for(int cur=ma;cur>=0;cur--)
{ //if((m<=-1)||(n<=-1))break;
if(n>=0)ans[cur]+=b[n--];
if(m>=0)ans[cur]+=a[m--];
if(ans[cur]>=10){
ans[cur]=ans[cur]%10;
if(cur==0)u=1;
else ans[cur-1]++;
}
}
if(u==1)cout<<"1";
for(int j=0;j<ma;j++)
{
cout<<ans[j];
}
return 0;
}