2 条题解

  • 0
    @ 2025-3-1 21:47:58
    #include <bits/stdc++.h>
    using namespace std;
    
    // 大整数乘法函数
    vector<int> mul(vector<int> &A, vector<int> &B) {
        // 结果数组,大小为 A 和 B 的长度之和
        vector<int> C(A.size() + B.size(), 0);
    
        // 模拟乘法过程
        for (int i = 0; i < A.size(); i++) {
            for (int j = 0; j < B.size(); j++) {
                // 对应位相乘并累加到结果数组的相应位置
                C[i + j] += A[i] * B[j];
            }
        }
    
        // 处理进位
        int t = 0;
        for (int i = 0; i < C.size(); i++) {
            t += C[i];
            C[i] = t % 10;
            t /= 10;
        }
    
        // 去除前导零
        while (C.size() > 1 && C.back() == 0) {
            C.pop_back();
        }
    
        return C;
    }
    
    int main() {
        string a, b;
        vector<int> A, B;
        cin >> a >> b;
    
        // 将输入的字符串转换为整数数组,低位在前
        for (int i = a.length() - 1; i >= 0; i--) {
            A.push_back(a[i] - '0');
        }
        for (int i = b.length() - 1; i >= 0; i--) {
            B.push_back(b[i] - '0');
        }
    
        // 调用乘法函数
        vector<int> ans = mul(A, B);
    
        // 输出结果
        for (int i = ans.size() - 1; i >= 0; i--) {
            cout << ans[i];
        }
        cout << endl;
    
        return 0;
    }
    

    信息

    ID
    5361
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    89
    已通过
    39
    上传者