top1编程
← 返回题目
题解

加法计算器

1 条题解

  • 0
    @ 2026-8-4 1:18:03

    解题思路

    要计算 4 个大整数相加,每个数最多 100 位,直接加会溢出 long long,用高精度加法。

    高精度加法的思路:

    1. 准备一个 sum 数组,用来存已经加好的结果,个位放在最前面。
    2. 每读入一个数,就从个位开始,把这个数的每一位加到 sum 对应的位上,同时处理进位。
    3. 重复 4 次,把所有数都加进去。
    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