用c++输入两个高精度正整数M和NM和N均小于100位。求这两个高精度数的积。
要实现高精度乘法,可以使用字符串来存储大整数,并模拟手工乘法的过程。
具体思路如下:
- 定义一个字符串数组,用于存储大整数的每一位。
- 从后往前遍历第一个大整数的每一位,与第二个大整数的每一位相乘,并将结果存储在一个临时数组中。
- 将临时数组中的每一位与结果数组中对应位置的值相加,注意进位的处理。
- 将结果数组转化为字符串,并去掉前导0。
以下是使用C++实现的代码示例:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string multiply(string num1, string 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 product = (num1[i] - '0') * (num2[j] - '0');
int sum = product + result[i + j + 1];
result[i + j + 1] = sum % 10; // 当前位
result[i + j] += sum / 10; // 进位
}
}
string res = "";
int i = 0;
while (i < len1 + len2 && result[i] == 0) {
i++;
}
for (; i < len1 + len2; i++) {
res += to_string(result[i]);
}
return res.empty() ? "0" : res;
}
int main() {
string M, N;
cin >> M >> N;
string res = multiply(M, N);
cout << res << endl;
return 0;
}
这样,就可以输入两个高精度正整数M和N,求它们的积了
原文地址: https://www.cveoy.top/t/topic/hQgG 著作权归作者所有。请勿转载和采集!