模板 C/C++ 高精度乘法

高精度乘法

实现思路

  1. 读入字符串,并将字符串的值存储到整型数组中,分别是被乘数数组a,乘数数组b。
  2. 通过两层for循环将数组a和数组b中各个元素乘起来,结果存放在数组c中。
  3. 若是数组c中的末尾元素为0且数组长度大于1,将数组长度减一。

代码实现

#include <iostream>
#include <string>
using namespace std;
string str1,str2;
int len1,len2,len,x;
int a[205], b[205], c[205];
int main(){
    cin >> str1;
    cin >> str2;
    len1 = int(str1.size()), len2 = int(str2.size());
    for(int i = 0; i < len1; i ++){
        a[len1-i] = str1[i] - '0';
    }
    for(int i = 0; i < len2; i ++){
        b[len2-i] = str2[i] - '0';
    }
    for(int i = 1; i <= len1; i ++){
        x = 0;
        for(int j = 1; j <= len2; j ++){
            c[i+j-1] = a[i] * b[j] + x + c[i+j-1];
            x = c[i+j-1]/10;
            c[i+j-1] %= 10;
        }
        c[i+len2] = x;
    }
    len = len1 + len2;
    while(c[len] == 0 && len>1){
        len --;
    }
    for(int i = len; i >= 1; i --){
        cout << c[i];
    }
    cout << endl;
}

猜你喜欢

转载自blog.csdn.net/m0_37550202/article/details/88358599
今日推荐