#include <bits/stdc++.h> using namespace std; int main() { string a, b; // 存储两个待相加的大数字符串(可能超过整型范围) cin >> a >> b; string ans = ""; // 存储相加结果的字符串(初始为空) int n = a.size(); int m = b.size(); int i = n - 1, j = m - 1; // 指针i指向a的最后一位(低位),j指向b的最后一位(低位) int add = 0; // 进位标志(初始为0,无进位) // 循环条件:i未遍历完a,或j未遍历完b,或仍有进位需要处理(三者满足其一则继续) while (i >= 0 || j >= 0 || add) { // 取出a的当前位数字(若i有效,取a[i]的数值;否则取0) int x = (i >= 0) ? (a[i] - '0') : 0; // 取出b的当前位数字(若j有效,取b[j]的数值;否则取0) int y = (j >= 0) ? (b[j] - '0') : 0; // 计算当前位的和(包括进位):x(a的当前位) + y(b的当前位) + add(进位) int res = x + y + add; // 将当前位的个位存入结果(例如和为15,则存5,进位1) ans.push_back(res % 10 + '0'); // res%10得到个位,转换为字符存入ans add = res / 10; // 更新进位(res/10得到十位,作为下一轮的进位) i -= 1; j -= 1; } // 反转结果字符串:因为相加时是从低位到高位存储(例如先存个位、十位、百位),反转后变为高位到低位(正确顺序) reverse(ans.begin(), ans.end()); cout << ans; return 0; }