社区讨论
60分,求助
P1601高精度加法参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m4e1gh8c
- 此快照首次捕获于
- 2024/12/07 18:35 去年
- 此快照最后确认于
- 2025/11/04 13:11 4 个月前
CPP
#include <iostream>
#include <cstring>
using namespace std;
char a[505] = {'0'}, b[505] = {'0'};
char c[506] = {'0'}; // 增加一个字符空间用于可能的进位
int main() {
cin >> a >> b;
int alen = strlen(a);
int blen = strlen(b);
bool jw = false; // 进位标志
int tmpa, tmpb, sum;
// 从后往前逐位相加
for (int i = max(alen, blen) - 1; i >= 0; i--) {
tmpa = (i < alen) ? a[i] - '0' : 0; // 如果a的当前位不存在,则补0
tmpb = (i < blen) ? b[i] - '0' : 0; // 如果b的当前位不存在,则补0
sum = tmpa + tmpb + jw; // 当前位的和
c[i + 1] = sum % 10 + '0'; // 存储当前位的个位数
jw = sum >= 10; // 更新进位标志
}
// 处理最高位的进位
c[0] = jw ? '1' : '0';
// 输出结果,跳过前导0
int startIndex = c[0] == '0' ? 1 : 0;
for (int i = startIndex; i <= max(alen, blen); i++) {
cout << c[i];
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...