// Problem: P1601 A+B Problem(高精)
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1601
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// User: Pannnn
#include
using namespace std;
vector sum(vector a, vector b) {
vector res;
// 标记进位
int p = 0;
for (int i = 0; i < a.size() || i < b.size(); ++i) {
if (i < a.size()) {
p += a[i];
}
if (i < b.size()) {
p += b[i];
}
res.push_back(p % 10);
p /= 10;
}
// 如果最后进位值不是0,再进1位
if (p) {
res.push_back(p);
}
return res;
}
// 将字符串反转并将字符对应数值存到vector中
vector reverse(string num) {
vector res;
for (int i = num.length() - 1; i >= 0; --i) {
res.push_back(num[i] - '0');
}
return res;
}
int main() {
string a, b;
cin >> a >> b;
/*
由于数值很大,以字符串格式读入后进行处理
模拟加法运算,从最后一位往前依次相加,用一个变量保存进位
由于最后可能会有进位,如果数值正向存储可能需要整体移动
所以将数值进行逆序,如果有进位仅需在最后添加,最后倒序输出
*/
vector num1 = reverse(a);
vector num2 = reverse(b);
vector res = sum(num1, num2);
for (int i = res.size() - 1; i >= 0; --i) {
cout << res[i];
}
cout << endl;
return 0;
}