Input
多组输入数据。
每组输入有两行,每行为一个非负的整数(可能包含前导零)。
所有整数位数不超过1234。
Output
对每组输入数据,输出一个整数a+b的和。请不要输出前导零。
Sample Input
1
1
100000000000000
100000000000000
Sample Output
2
200000000000000
<pre name="code" class="cpp">#include<iostream>
#include<string>
using namespace std;
void calc(string& LONG,string SHORT)//计算低位相加
{
int cha = LONG.length() - SHORT.length();
string n = '0' + LONG;
int jinwei = 0;
for (unsigned int i = SHORT.length()-1; i >0; i--)
{
n[cha + i+1] = char(n[cha + i+1] + SHORT[i] - '0' + jinwei);
if (n[cha+i+1]>'9')//进位
{
n[cha + i+1] = char(n[cha + i+1] - 10);
jinwei = 1;
}
else jinwei = 0;
}
n[cha + 1] = char(n[cha + 1] + SHORT[0] - '0' + jinwei);
if (n[cha + 1]>'9')//进位
{
n[cha + 1] = char(n[cha + 1] - 10);
jinwei = 1;
}
else jinwei = 0;
if (jinwei == 1) n[cha] ='1';//保证最后一位相加的进位正确
LONG = n;
return;
}
void print(string n)//输出函数
{
bool flag=0;
for (unsigned int i = 0; i < n.length(); i++)
{
if (!flag)
{
if (n[i] !='0')//删去前导零
{
cout << n[i];
flag = 1;
}
}
else cout << n[i];
}
if (!flag) cout << "0";//保证0+0的可能
cout << endl;
}
int main()
{
string a, b;
while (cin >> a >> b)
{
if (a.length() >= b.length())//a长度大于b
{
calc(a, b);
print(a);
}
else//b长度大于a
{
calc(b, a);
print(b);
}
}
return 0;
}