要实现高精度乘法,可以使用字符串来存储大整数,并模拟手工乘法的过程。

具体思路如下:

  1. 定义一个字符串数组,用于存储大整数的每一位。
  2. 从后往前遍历第一个大整数的每一位,与第二个大整数的每一位相乘,并将结果存储在一个临时数组中。
  3. 将临时数组中的每一位与结果数组中对应位置的值相加,注意进位的处理。
  4. 将结果数组转化为字符串,并去掉前导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,求它们的积了

用c++输入两个高精度正整数M和NM和N均小于100位。求这两个高精度数的积。

原文地址: https://www.cveoy.top/t/topic/hQgG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录