题解
2025-05-03 16:39:20
发布于:四川
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main() {
string s1, s2;
cin >> s1 >> s2;
string s; // s 表示最终计算结果
int x = 0; // x 表示进位
int i = s1.size() - 1; // i 表示 s1 的下标,从 s1 最后一位开始
int j = s2.size() - 1; // j 表示 s2 的下标,从 s2 最后一位开始
while (i >= 0 || j >= 0 || x > 0) { // 当i、j、x任有一个大于等于零时计算
int n1 = (i >= 0) ? s1[i] - 'A' : 0; // 将 s1[i] 转换为数字保存在 n1 中
int n2 = (j >= 0) ? s2[j] - 'A' : 0; // 将 s2[j] 转换为数字保存在 n2 中
int sum = n1 + n2 + x; // 每一位求和,用sum记录求和结果
x = sum / 20; // sum 除以20的商作为进位保存到 x 中
int r = sum % 20; // sum 除以20的余数保存到 r 中
s = char(r + 'A') + s; // 余数r转换为字母保存到 s 中
i--, j--; // 一轮计算结束,s1 和 s2 均向前移动一位
}
while (s[0] == 'A') s.erase(0, 1); // 计算结束后去掉首位零
cout << s << endl;
return 0;
}
这里空空如也
有帮助,赞一个