题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
输入输出样例
输入 #1
1 2
输出 #1
2
说明/提示
每个非负整数不超过 10^2000。
注意数据范围!!!
AC:
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
char a[1487],b[14285];
cin>>a>>b;
int a1[1487]={0},b1[14285]={0},c[53341]={0};
int la=strlen(a);
int lb=strlen(b);
if((la==1&&a[0]=='0')||(lb==1&&b[0]=='0')){
cout<<0;
return 0;
}
for(int i=0;i<la;i++){
a1[la-i]=a[i]-48;
}for(int ib=0;ib<lb;ib++){
b1[lb-ib]=b[ib]-48;
}int x=0;
for(int ia=1;ia<=la;ia++){
for(int j=1;j<=lb;j++){
int r=a1[ia]*b1[j];
x=r/10;
r%=10;
c[ia+j]+=r;
c[ia+j+1]+=x+c[ia+j]/10;
c[ia+j]%=10;
}
}bool ss=false;
for(int ii=la+lb+1;ii>=2;ii--){
if(c[ii]%10!=0)ss=true;
if(ss==true)cout<<c[ii];
}
return 0;
}