#include <iostream>
#include <vector>
#include <algorithm> //reverse 函数在该库中
using namespace std;
// C = A + B, A >= 0, B >= 0
// 用引用传参会快很多
vector<int> add(vector<int> &A, vector<int> &B)
{
if (A.size() < B.size()) return add(B, A);
reverse(A.begin(),A.end());
reverse(B.begin(),B.end());
vector<int> C;
int t = 0;
for (int i = 0; i < A.size(); i ++ )
{
t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if (t) C.push_back(t);
reverse(C.begin(),C.end());
return C;
}
int main()
{
vector<int>A;
vector<int>B;
// TODO: 从键盘输入,遇到换行停止
int x;
while(cin >> x)
{
A.push_back(x);
if(cin.get()=='\n') break;
}
while(cin >> x)
{
B.push_back(x);
if(cin.get()=='\n') break;
}
vector<int>C = add(A,B);
//三种遍历方法
// for (auto num : A)
// cout << num << " ";
// for (auto it = C.begin();it != C.end();it++)
// cout << *it << " ";
for (int i = 0; i < C.size(); i++)
cout << C[i] << " ";
return 0;
}
学习自用,未标明引用,欢迎指出问题。