1 条题解

  • 0
    @ 2025-4-2 20:40:05
    #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;
        // 先比较大小,保证大减小
        if (A.size() < B.size() ||
            A.size() == B.size() && A < B)
        {
            swap(A, B);
            cout << "-";
        }
        // 翻转并转成对应的整数
        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];
        // 借位
        for (int i = 0; i <= cLen - 2; i++)
        {
            if (c[i] < 0)
            {
                c[i + 1]--;
                c[i] += 10;
            }
        }
        // 去掉前导 0
        while (cLen > 1 && c[cLen - 1] == 0)
            cLen--;
        // 输出
        for (int i = cLen - 1; i >= 0; i--)
            cout << c[i];
        return 0;
    }
    
    • 1

    信息

    ID
    13409
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    (无)
    递交数
    10
    已通过
    4
    上传者