|
发表于 2023-12-30 15:07:25
|
显示全部楼层
在C++中,我们可以使用字符串来表示大整数,然后实现高精度乘法。下面是一个简单的示例代码:
- #include <iostream>
- #include <string>
- using namespace std;
- string multiply(string num1, string num2) {
- int n1 = num1.size();
- int n2 = num2.size();
- // 结果最多为两个乘数位数之和
- vector<int> res(n1 + n2, 0);
- // 从个位数开始逐位相乘
- for (int i = n1 - 1; i >= 0; i--) {
- for (int j = n2 - 1; j >= 0; j--) {
- int mul = (num1[i] - '0') * (num2[j] - '0');
- // 乘积在res对应的索引位置
- int p1 = i + j;
- int p2 = i + j + 1;
- // 叠加到res上
- int sum = mul + res[p2];
- res[p2] = sum % 10;
- res[p1] += sum / 10;
- }
- }
- // 去除前导零
- int i = 0;
- while (i < res.size() && res[i] == 0) {
- i++;
- }
- // 将计算结果转化为字符串
- string result = "";
- for (; i < res.size(); i++) {
- result += to_string(res[i]);
- }
- return result.empty() ? "0" : result;
- }
- int main() {
- string num1 = "123456789";
- string num2 = "987654321";
- cout << multiply(num1, num2) << endl;
- return 0;
- }
复制代码
这个示例代码使用了两个字符串 `num1` 和 `num2` 来模拟两个大整数,然后实现了高精度乘法。输出结果为两个大整数的乘积。
当然,这只是一个简单的示例代码,还可以根据需求进行优化和扩展。希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|