1 条题解

  • 1
    @ 2025-3-30 8:40:18

    wotojo域管理员代码

    #include <bits/stdc++.h>
    using namespace std;
    const int LEN = 200;
    string A, B;
    int aLen, bLen, cLen;
    int a[LEN + 5], b[LEN + 5], c[LEN + 1 + 5];
    int main()
    {
        // 以字符串形式输入
        cin >> A >> B;
    
        // 转换为数字并翻转存入数组
        aLen = A.size();
        bLen = B.size();
        cLen = max(aLen, bLen); // 相加的结果,在进位之前的长度
        for (int i = 0; i < aLen; i++)
            a[aLen - i - 1] = A[i] - '0';
        for (int i = 0; i < bLen; i++)
            b[bLen - i - 1] = B[i] - '0';
    
        // (可选)数组清零
        for (int i = aLen; i < cLen; i++)
            a[i] = 0;
        for (int i = bLen; i < cLen; i++)
            b[i] = 0;
        for (int i = 0; i < cLen; i++)
            c[i] = 0;
    
        //  相加
        for (int i = 0; i < cLen; i++)
            c[i] = a[i] + b[i];
    
        // 进位
        for (int i = 0; i < cLen - 1; i++)
        {
            c[i + 1] += c[i] / 10;
            c[i] %= 10;
        }
    
        // 最高位扩展
        while (c[cLen - 1] >= 10)
        {
            c[cLen] = c[cLen - 1] / 10;
            c[cLen - 1] %= 10;
            cLen++;
        }
    
        // 前导 0 去除
        while (cLen > 1 && c[cLen - 1] == 0)
            cLen--;
    
        // 输出
        for (int i = cLen - 1; i >= 0; i--)
            cout << c[i];
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    38
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    1
    已通过
    1
    上传者