用途
用于两个巨大数的相乘计算
乘法核心
代码实现
#include <bits/stdc++.h>
using namespace std;
const int num=1e4;
char ca[num],cb[num];
int a[num],b[num],c[num];
void demo(char n1[],char n2[]){
int len1=strlen(n1),len2=strlen(n2);
int len=len1*len2;
for(int i=1;i<=len1;++i){
a[i]=n1[len1-i]-'0';//把字符数转化为数字并反转
}
for(int i=1;i<=len2;++i){
b[i]=n2[len2-i]-'0';
}
for(int i=1;i<=len1;++i){
for(int j=1;j<=len2;++j){
c[i+j-1]+=a[i]*b[j];//同一位上的乘数相加之和,还有个进位值
c[i+j]+=c[i+j-1]/10;//进位
c[i+j-1]%=10;//取余
}
}
while(c[len]==0) len--;
for(int i=len;i>0;--i){
cout<<c[i];
}
}
int main(){
cin>>ca>>cb;
demo(ca,cb);
return 0 ;
}
//测试乘数1 16856187648765187984
//测试乘数1 51111624688516487651764915687367841956345
//测试积1 861547136782893467654394856346186137093705717479566246558480