题目描述:
请设计一个算法完成两个超长正整数的加法。
输入:string型
输出:string型
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string AddLongInteger(string& str1, string& str2)
{
int len1 = str1.size() - 1;
int len2 = str2.size() - 1;
// 记录相加之后的答案
string ans = "";
// 记录进位
int carry = 0;
while(len1 >= 0 || len2 >= 0)
{
int num = carry;
if(len1 >= 0)
num += (str1[len1] - '0');
if(len2 >= 0)
num += (str2[len2] - '0');
// 判断当前位是否存在进位
if(num > 9)
{
num -= 10;
carry = 1;
}
else
carry = 0;
ans += (num + '0');
len1--;
len2--;
}
if(carry == 1)
ans += '1';
// 逆转字符串
reverse(ans.begin(), ans.end());
return ans;
}
int main()
{
string str1, str2;
while(cin >> str1 >> str2)
cout << AddLongInteger(str1, str2) << endl;
return 0;
}