定义一个进位变量,两个字符串从个位开始每一位逐位相加并和进位相加,如果结果大于10,则进位为1,否则进位为0。某个字符串加完所有位之后,就用进位和另一个字符串进行运算,加完之后如果进位为1,则在最高位加1。

#include <iostream>
using namespace std;

int main() {
    string s1, s2;
    cin >> s1 >> s2;
    int count1 = s1.length() - 1;
    int count2 = s2.length() - 1;
    int high = 0;
    string ans;
    while (count1 >= 0 && count2 >= 0) {
        ans = to_string((s1.at(count1) + s2.at(count2) - 2 * '0' + high) % 10) + ans;
        high = (s1.at(count1) + s2.at(count2) - 2 * '0' + high) / 10;
        count1--;
        count2--;
    }
    if (count1 > 0) {
        while (count1 >= 0) {
            ans = to_string((s1.at(count1) - '0' + high) % 10) + ans;
            high = (s1.at(count1) - '0' + high) / 10;
            count1--;
        }
    } else if (count2 > 0) {
        while (count2 >= 0) {
            ans = to_string((s2.at(count2) - '0' + high) % 10) + ans;
            high = (s2.at(count2) - '0' + high) / 10;
            count2--;
        }
    }
    if (high > 0) {
        ans = to_string(high) + ans;
    }
    cout << ans;
    return 0;
}
// 64 位输出请用 printf("%lld")