B2214shengmin @ 2022-06-25 21:32:53
#include<bits/stdc++.h>
using namespace std;
int int1[1010],int2[1010];
char str1[1010],str2[1010];
void init(char a[],int *b){//字符转数组
int l=strlen(a);
for(int i=0;i<l;i++){
b[i]=a[l-i-1]-'0';
}
}
void mult(char a[],char b[]){//高精*高精
init(a,int1);init(b,int2);
int c[2022],i,j;
memset(c,0,sizeof(c));
int len_a=strlen(a),len_b=strlen(b);
for(i=0;i<len_a;i++){
for(j=0;j<len_b;j++){
c[i+j]=c[i+j]+int1[i]*int2[j];
c[i+j+1]=c[i+1+j]+c[i+j]/10;//进位
c[i+j]%=10;//保留当前位置乘积
}
}//i=len_a-1,b=len_b-1
int k=len_a+len_b-1;
while(c[k]>=10){
c[k+1]=c[k]/10;
c[k]%=10;
k++;
}
while(k>0&&c[k]==0)k--;
for(int h=k;h>=0;h--)cout<<c[h];
}
int main() {
while(scanf("%s%s",str1,str2)==2){
memset(int1,0,sizeof(int1));
memset(int2,0,sizeof(int2));
mult(str1,str2);
cout<<endl;
}
return 0;
}
by B2214shengmin @ 2022-06-25 22:19:20
@lao_ba 你有点血口喷人