题解
加法计算器
1 条题解
-
0
解题思路
要计算 4 个大整数相加,每个数最多 100 位,直接加会溢出 long long,用高精度加法。
高精度加法的思路:
- 准备一个 sum 数组,用来存已经加好的结果,个位放在最前面。
- 每读入一个数,就从个位开始,把这个数的每一位加到 sum 对应的位上,同时处理进位。
- 重复 4 次,把所有数都加进去。
- 最后从高位到低位输出 sum。
每次相加:某一位的数值 = sum 的这一位 + 当前数这一位 + 上次的进位。超过 9 就向上一位进 1。
参考代码
// 用途:加法计算器,计算 4 个大整数相加的结果(高精度加法) #include <iostream> using namespace std; char s[105]; int sum[105]; int main() { // 读入 4 个数,逐个数加到 sum 里 for (int k = 0; k < 4; k++) { cin >> s; int l = 0; while (s[l]) l++; // 从个位开始逐位相加,同时处理进位 int up = 0, i = 0; while (i < l || up > 0) { int v = sum[i] + (i < l ? s[l - 1 - i] - '0' : 0) + up; sum[i] = v % 10; up = v / 10; i++; } } // 从高位到低位输出 int hi = 104; while (hi > 0 && sum[hi] == 0) hi--; for (int i = hi; i >= 0; i--) cout << sum[i]; cout << endl; return 0; }复杂度分析
每个数最多 100 位,加一个数只需要扫一遍它的每一位,是 O(100)。4 个数一共 O(400),可以认为时间开销是常数级的。
- 1