#include #include #include

using namespace std;

int main() { int m, n; cin >> m >> n;

vector<int> num1, num2, result;

// 将两个数的每一位存储到数组中
while (m != 0) {
    num1.push_back(m % 10);
    m /= 10;
}
while (n != 0) {
    num2.push_back(n % 10);
    n /= 10;
}

// 计算竖式乘法
for (int i = 0; i < num2.size(); i++) {
    int carry = 0;
    vector<int> temp;
    // 乘法运算
    for (int j = 0; j < num1.size(); j++) {
        int product = num1[j] * num2[i] + carry;
        carry = product / 10;
        temp.push_back(product % 10);
    }
    if (carry != 0) {
        temp.push_back(carry);
    }
    // 补0
    for (int j = 0; j < i; j++) {
        temp.insert(temp.begin(), 0);
    }
    // 相加
    int size = max(result.size(), temp.size());
    carry = 0;
    for (int j = 0; j < size; j++) {
        int sum = (j < result.size() ? result[j] : 0) + (j < temp.size() ? temp[j] : 0) + carry;
        carry = sum / 10;
        if (j < result.size()) {
            result[j] = sum % 10;
        } else {
            result.push_back(sum % 10);
        }
    }
    if (carry != 0) {
        result.push_back(carry);
    }
}

// 输出竖式乘法结果
for (int i = result.size() - 1; i >= 0; i--) {
    cout << result[i] << endl;
}

return 0;

}


原文地址: https://www.cveoy.top/t/topic/p9c3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录