高精度乘法函数模板
#include <iostream> #include <vector> using namespace std; // 高精度乘法函数 vector<int> multiply(const vector<int>& num1, const vector<int>& num2) { int len1 = num1.size(); int len2 = num2.size(); vector<int> result(len1 + len2, 0); for (int i = len1 - 1; i >= 0; --i) { for (int j = len2 - 1; j >= 0; --j) { int mul = num1[i] * num2[j]; int p1 = i + j, p2 = i + j + 1; int sum = mul + result[p2]; result[p2] = sum % 10; // 个位数存储到 p2 位置 result[p1] += sum / 10; // 进位存储到 p1 位置 } } // 去除前导零 while (result.size() > 1 && result.front() == 0) { result.erase(result.begin()); } return result; } // 输出结果函数 void printResult(const vector<int>& result) { for (int i : result) { cout << i; } cout << endl; }
这个模板实现了一个高精度乘法函数 multiply,可以计算任意长度的两个非负整数的乘积。它使用了倒序存储的向量来表示大整数,并采用竖式乘法的思想进行计算。
模板中的 multiply 函数接受两个参数 num1 和 num2,分别表示两个乘数,并返回它们的乘积。函数内部使用两个嵌套的循环遍历乘数,并将计算结果存储在向量 result 中。最后,去除 result 中的前导零,并返回最终的结果。
printResult 函数用于输出结果。
在示例用法部分,我们通过标准输入获取两个乘数的值,并将它们转化为倒序存储的向量形式。然后调用 multiply 函数计算乘积,并使用 printResult 函数输出结果。

浙公网安备 33010602011771号