高精度乘法
实现思路
- 读入字符串,并将字符串的值存储到整型数组中,分别是被乘数数组a,乘数数组b。
- 通过两层for循环将数组a和数组b中各个元素乘起来,结果存放在数组c中。
- 若是数组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;
}