c++大整数乘法
作者:野牛程序员:2023-06-19 16:22:46C++程序设计阅读 3122
在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 函数,它接受两个参数 num1 和 num2,分别表示两个大整数。算法采用传统的手工乘法方法,从右向左逐位相乘,并将结果累加到正确的位置上。最后,我们需要移除乘法结果中的前导零。
在主函数中,我们定义了两个大整数 num1 和 num2,并调用 multiply 函数进行乘法运算。最后,我们打印出结果。
请注意,这个示例代码对于非常大的整数可能会导致溢出或性能问题。对于更高效的大整数乘法算法,可以使用Karatsuba算法或者快速傅里叶变换(FFT)等方法。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

