当前位置:首页C++程序设计 > 正文

c++大整数乘法

作者:野牛程序员:2023-06-19 16:22:46C++程序设计阅读 2589

在C++中进行大整数乘法可以使用字符串或数组来表示大整数,并实现相应的乘法算法。以下是一个使用字符串表示大整数进行乘法的示例代码:

#include <iostream>
#include <string>
#include <algorithm>

std::string multiply(const std::string& num1, const std::string& num2) {
    int n = num1.size();
    int m = num2.size();
    std::string result(n + m, '0');
    
    for (int i = n - 1; i >= 0; i--) {
        for (int j = m - 1; j >= 0; j--) {
            int mul = (num1[i] - '0') * (num2[j] - '0');
            int sum = result[i + j + 1] - '0' + mul;
            result[i + j + 1] = sum % 10 + '0';
            result[i + j] += sum / 10;
        }
    }
    
    // 移除前导零
    result.erase(0, std::min(result.find_first_not_of('0'), result.size() - 1));
    
    return result;
}

int main() {
    std::string num1 = "123456789";
    std::string num2 = "987654321";
    
    std::string result = multiply(num1, num2);
    
    std::cout << "Result: " << result << std::endl;
    
    return 0;
}

这个示例代码中,我们定义了一个 multiply 函数,它接受两个参数 num1num2,分别表示两个大整数。算法采用传统的手工乘法方法,从右向左逐位相乘,并将结果累加到正确的位置上。最后,我们需要移除乘法结果中的前导零。

在主函数中,我们定义了两个大整数 num1num2,并调用 multiply 函数进行乘法运算。最后,我们打印出结果。

请注意,这个示例代码对于非常大的整数可能会导致溢出或性能问题。对于更高效的大整数乘法算法,可以使用Karatsuba算法或者快速傅里叶变换(FFT)等方法。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击