4 条题解

  • 1
    @ 2025-8-20 0:52:16
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1010;
    
    int a[N], b[N];
    int al, bl;
    
    void add(int a[], int &al, int b[], int &bl) {
    int t = 0;
    al = max(al, bl);
    for (int i = 0; i < al; i++) {
    t += a[i] + b[i];
    a[i] = t % 10;
    t /= 10;
    }
    if (t) a[al++] = 1;
    if(al > 1 && a[al - 1] == 0) al--;
    }//到底是改用while还是if有待考究
    
    int main() {
    int T;
    cin >> T;
    for (int k = 1; k <= T; k++) {
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    al = 0;
    bl = 0;
    
    string x, y;
    cin >> x >> y;
    
    for (int i = x.size() - 1; i >= 0; i--) a[al++] = x[i] - '0';
    for (int i = y.size() - 1; i >= 0; i--) b[bl++] = y[i] - '0';
    
    // 执行加法
    add(a, al, b, bl);
    cout << "Case " << k << ":" << endl;
    cout << x << " + " << y << " = ";
    for (int i = al - 1; i >= 0; i--) cout << a[i];
    cout << endl;
    if (k < T) cout << endl;
    
    }
    return 0;
    }
    

    有大佬用一个数组就可以存储,用空间换时间,但是我比较笨,不会简便。

    信息

    ID
    165
    时间
    3000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    1474
    已通过
    177
    上传者