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



京公网安备 11010502036488号