#include <iostream>
#include <string>
#include <cassert>
using namespace std;
int main()
{
string str1, str2, str;
int length1=0, length2=0,carryBit=0;
cin >> str1 >> str2;
length1 = str1.length();
length2 = str2.length();
while(length1>0 || length2>0 )
{
int x1=0, x2=0;
if(length1>0)
{//str1
length1--;
x1 = str1.at(length1)-'0';
assert(x1>=0 && x1<=9); //若字符串包含非0~9数字时出错
}
if(length2>0)
{//str2
length2--;
x2 = str2.at(length2)-'0';
assert(x2>=0 && x2<=9);
}
int sum = x1+x2+carryBit;
char c = sum%10+48; //把数字转化为字符
str += c;
carryBit = sum/10; //计算进位
}//end while
if(carryBit)
{
char c = carryBit+48;
str += c;
}
int i=str.length(), j=i;
while(j>0)
{//定位j为非0数字开头
if('0'==str[j-1])
--j;
else
break;
}
if(j!=i)//舍弃0开头,使输出结果以非0开头
str.erase(j, i-j);
for(j=j-1; j>=0; j--)//逆序输出str
cout << str[j];
system("pause");
return 0;
}
//上面str+=c可改为str.insert(1,1,c)则可得到正序结果str;
呃,不知还有没有错