1 条题解

  • 0
    @ 2025-4-2 19:58:33
    #include <bits/stdc++.h>
    using namespace std;
    string A, B;
    // a+b==c
    int aLen, bLen, cLen;
    int a[205], b[205], c[205];
    int main()
    {
        cin >> A >> B;
        // 翻转并转成对应的整数
        aLen = A.size();
        bLen = B.size();
        for (int i = 0; i < aLen; i++)
            a[i] = A[aLen - 1 - i] - '0';
        for (int i = 0; i < bLen; i++)
            b[i] = B[bLen - 1 - i] - '0';
        // 相加
        cLen = max(aLen, bLen);
        for (int i = 0; i < cLen; i++)
            c[i] = a[i] + b[i];
        // 进位 c[0]~c[cLen-1]
        for (int i = 0; i <= cLen - 2; i++)
        {
            c[i + 1] += c[i] / 10;
            c[i] %= 10;
        }
        // 最高位进位
        if (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
    13408
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    20
    已通过
    5
    上传者