版权声明:转载注明出处 https://blog.csdn.net/deephacking/article/details/82802225
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string Add(string num1, string num2)
{
//保证a永远是最长的那个字符串
if (num1.size() < num2.size())
{
string temp = num1;
num1 = num2;
num2 = temp;
}
//拿到a和b的索引
int ai = num1.size()-1;
int bi = num2.size()-1;
//用来存每位A和B的取值
int valueA = 0;
int valueB = 0;
//表示进位标志
int flag = 0;
//定义一个存储结果的一维向量
vector<int> result;
while (ai >= 0)
{
if (bi<0)
{
valueB = 0;
}
else
{
valueB = num2[bi]-48;
bi--;
}
valueA = num1[ai] - 48;
ai--;
int sum = flag + valueA + valueB;
//更新下一次的进位标志
flag = sum / 10;
result.push_back(sum % 10);
}
//处理最后进位问题
if (flag == 1)
{
result.push_back(1);
}
string output = "";
vector<int>::iterator it;
for (it=result.begin();it!=result.end();it++)
{
output += to_string(*it);
}
//将得到的字符串逆序
string _output(output.rbegin(), output.rend());
return _output;
}
int main()
{
string a, b;
while(cin>>a>>b)
{
cout << Add(a, b) << endl;
}
return 0;
}