下面是一个用 C++ 编写的高精度乘法程序:

#include <iostream>
#include <vector>
#include <algorithm>

std::vector<int> multiply(const std::vector<int>& num1, const std::vector<int>& num2) {
    int m = num1.size();
    int n = num2.size();
    std::vector<int> result(m + n, 0);

    for (int i = m - 1; i >= 0; i--) {
        for (int j = n - 1; j >= 0; j--) {
            int product = num1[i] * num2[j];
            int sum = result[i + j + 1] + product;
            result[i + j + 1] = sum % 10;
            result[i + j] += sum / 10;
        }
    }

    // 去除结果前面多余的0
    while (result.size() > 1 && result[0] == 0) {
        result.erase(result.begin());
    }

    return result;
}

int main() {
    std::string num1, num2;
    std::cout << '请输入第一个数字:';
    std::cin >> num1;
    std::cout << '请输入第二个数字:';
    std::cin >> num2;

    // 将输入的字符串转换为整数数组,逆序存储
    std::vector<int> num1_vec(num1.size());
    std::vector<int> num2_vec(num2.size());
    std::transform(num1.rbegin(), num1.rend(), num1_vec.begin(), [](char c) { return c - '0'; });
    std::transform(num2.rbegin(), num2.rend(), num2_vec.begin(), [](char c) { return c - '0'; });

    std::vector<int> result = multiply(num1_vec, num2_vec);

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

    return 0;
}

使用此程序,您可以输入两个数字,然后将它们相乘得到高精度的乘法结果。该程序将输入的数字转换为整数数组,并通过两个嵌套的循环进行乘法计算。最后,它将结果存储在一个整数数组中,并输出结果。

C++ 高精度乘法算法实现

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

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