定义一个进位变量,两个字符串从个位开始每一位逐位相加并和进位相加,如果结果大于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")