C++ 高精度乘法算法实现
下面是一个用 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;
}
使用此程序,您可以输入两个数字,然后将它们相乘得到高精度的乘法结果。该程序将输入的数字转换为整数数组,并通过两个嵌套的循环进行乘法计算。最后,它将结果存储在一个整数数组中,并输出结果。
原文地址: https://www.cveoy.top/t/topic/p3tq 著作权归作者所有。请勿转载和采集!