1 条题解

  • 0
    @ 2026-5-6 10:21:00

    题解文字教学

    当数字长度可能极大(如 500 位)时,普通整数类型无法存储,需要用高精度加法

    1. 用字符串读入两个大数。
    2. 将字符串倒序转为整型数组(个位在数组下标 0 处),方便从低位向高位运算。
    3. 逐位相加,同时处理进位。
    4. 最后倒序输出结果数组,忽略前导零。
      (若结果恰好为零,应输出一个 0。)

    复杂度 O(len),len ≤ 500,完全可行。


    参考代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        string s1, s2;
        cin >> s1 >> s2;
        int a[505] = {0}, b[505] = {0}, c[505] = {0};
        int l1 = s1.size(), l2 = s2.size();
        for (int i = 0; i < l1; ++i) a[i] = s1[l1 - 1 - i] - '0';
        for (int i = 0; i < l2; ++i) b[i] = s2[l2 - 1 - i] - '0';
        int car = 0, len = max(l1, l2);
        for (int i = 0; i < len; ++i) {
            int sum = a[i] + b[i] + car;
            c[i] = sum % 10;
            car = sum / 10;
        }
        if (car) c[len++] = car;
        while (len > 1 && c[len - 1] == 0) --len;
        for (int i = len - 1; i >= 0; --i) cout << c[i];
        cout << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    589
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    6
    已通过
    4
    上传者