33 lines
791 B
C++
33 lines
791 B
C++
#include<cstdio>
|
|
#include<cstring>
|
|
int main(){
|
|
char a1[2005],b1[2005];
|
|
int a[2005],b[2005],c[10000],lena,lenb,lenc,i,j,x;
|
|
memset(a,0,sizeof a);
|
|
memset(b,0,sizeof b);
|
|
memset(c,0,sizeof c);
|
|
//scanf("%[^\n]%*c%[^\n]%*c",&a1,&b1);
|
|
scanf("%s%s",&a1,&b1);
|
|
lena=strlen(a1);
|
|
lenb=strlen(b1);
|
|
for(i=0;i<=lena-1;i++)a[lena-i]=a1[i]-48;//倒序写入a
|
|
for(i=0;i<=lenb-1;i++)b[lenb-i]=b1[i]-48;//倒序写入b
|
|
for(i=1;i<=lena;i++)
|
|
{
|
|
x=0; //用于存放进位
|
|
for(j=1;j<=lenb;j++) //对乘数的每一位进行处理
|
|
{
|
|
c[i+j-1]=c[i+j-1]+a[i]*b[j]+x; //原数加上当前乘积加上上次乘积进位
|
|
x=c[i+j-1]/10;
|
|
c[i+j-1]%=10;
|
|
}
|
|
c[i+lenb]=x; //进位
|
|
}
|
|
lenc=lena+lenb;
|
|
while(c[lenc]==0&&lenc>1) //删除前导0
|
|
lenc--;
|
|
for(i=lenc;i>=1;i--)
|
|
printf("%d",c[i]);
|
|
printf("\n");
|
|
}
|