用cpp写一个两个非负整数的高精度乘法模板,非负整数位数范围小于等于5000位。
时间: 2024-10-21 17:14:15 浏览: 13
高精度整数(测试版)_高精度_
在C++中,我们可以使用字符串来处理高精度的乘法,因为字符串可以自然地表示任意长度的整数。下面是一个简单的模板函数,它实现了两个非负整数的乘法,假设它们的位数都不超过5000:
```cpp
#include <string>
#include <vector>
std::string multiplyHighPrecision(const std::string& num1, const std::string& num2) {
int maxLen = std::max(num1.size(), num2.size());
// 初始化结果字符串
std::string result(maxLen + 1, '0');
for (int i = maxLen - 1; i >= 0; i--) {
int carry = 0;
for (int j = 0; j <= i; j++) {
int product = static_cast<int>(num1[i] - '0') * static_cast<int>(num2[j] - '0') + carry;
result[i - j] += product % 10;
carry = product / 10;
}
if (carry > 0) {
result[i] += carry;
}
}
while (result.back() == '0') {
result.pop_back(); // 移除多余的零
}
return result;
}
阅读全文