#include<bits/stdc++.h>
using namespace std;
int mins(int a,int b)
{
return a<b?a:b ;
}
//
string add(string a,string b)
{
string test="";//返回的字符串
int sum[1010];
int n=0;//进位
memset(sum,0,sizeof(sum));
//
string res0="",res1="";
int num4=0,num5=0;
for(int i=0;i<a.size();i++)
{
char tmp=a.at(i);
if(tmp!='0'||num4!=0)
{
num4++;
res0+=tmp;
}
}
for(int i=0;i<b.size();i++)
{
char tmp=b.at(i);
if(tmp!='0'||num5!=0)
{
num5++;
res1+=tmp;
}
}
a=res0;
b=res1;
//
int min=mins(a.size(),b.size());
//
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int count=0;//计数器
//
for(int i=0;i<min;i++)
{
char tmp1=a.at(i);
char tmp2=b.at(i);
int res=tmp1-'0'+tmp2-'0'+n;
//
sum[i]=res%10;
n=res/10;
//
//cout<<n<<endl;
//看看有多少位数
count++;
}
//
if(a.size()>b.size())
{
for(int i=min;i<a.size();i++)
{
char temp=a.at(i);
sum[i]=temp-'0'+n;
//
n=sum[i]/10;
//
sum[i]=sum[i]%10;
//cout<<n<<endl;
//n/=10;
//
//cout<<n<<endl;
count++;
}
if(n!=0)
{
sum[a.size()-1]=sum[a.size()-1]%10;
sum[a.size()]=n;
count++;
}
int d0=0;
for(int i=count-1;i>=0;i--)
{
//
//cout<<sum[i]<<endl;
char tmp=sum[i]+'0';
if(tmp!=0||d0!=0)
{
test+=tmp;
d0++;
}
}
if(d0==0)
{
return "0";
}
return test;
}
else {
for(int i=min;i<b.size();i++)
{
char temp=b.at(i);
sum[i]=temp-'0'+n;
//
n=sum[i]/10;
sum[i]=sum[i]%10;
//cout<<n<<endl;
count++;
}
if(n!=0)
{
//
sum[b.size()-1]=sum[b.size()-1]%10;
//cout<<n<<endl;
sum[b.size()]=n;
count++;
}
int d1=0;
for(int i=count-1;i>=0;i--)
{
//cout<<sum[i]<<endl;
char tmp=sum[i]+'0';
if(tmp!='0'||d1!=0)
{
test+=tmp;
d1++;
}
}
if(d1==0)
{
return "0";
}
return test;
}a
}
int main()
{
string a,b;
cin>>a>>b;
cout<<add(a,b);
// cout<<123+99999;
}
000+000
999+123
123+999
00123+999999
999999+00123
重要的测试点,如果你过了,应该没问题//废了老命,QAQ