题目名称
高精度数的乘法运算
题目描述
输入两个非负的高精度数a,b。输出他们的乘积。
输入描述
共2行,第1行是因数a,第2行是因数b。
输出描述
一行,即所求的积
输入样例
888888888888888888888888
44444444
输出样例
39506172444444444444444404938272
说明
a和b的长度不超过100位
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
完整代码
#include<bits/stdc++.h>
using namespace std;
int main(){
char a1[1001]={},a2[1001]={};
int b1[1001]={},b2[1001]={},b3[1001]={};
cin>>a1>>a2;
int len1=strlen(a1);
int len2=strlen(a2);
for(int i=0;i<len1;i++){
b1[len1-1-i]=a1[i]-'0';
}
for(int i=0;i<len2;i++){
b2[len2-1-i]=a2[i]-'0';
}
for(int j=0;j<len2;j++){
int jinwei=0;
for(int i=0;i<len1;i++){
b3[i+j]=b2[j]*b1[i]+jinwei+b3[i+j];
jinwei=b3[i+j]/10;
b3[i+j]%=10;
}
b3[j+len1]=jinwei;
}
int lenc=len1+len2;
while(b3[lenc-1]==1 && lenc>1){
lenc--;
}
for(int i=lenc-1;i>=0;i--){
cout<< b3[i] ;
}
return 0;
}