#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
char a[N],b[N];
int x[N+10],y[N+10],z[N*2+10];
int main()
{
int i,j,n,m,o;
scanf("%s %s",a,b);
m=strlen(a);
n=strlen(b);
j=0;
for(i=m-1;i>=0;i--)//倒序转为int型数组
{
x[j]=a[i]-'0';
j++;
}
j=0;
for(i=n-1;i>=0;i--)
{
y[j]=b[i]-'0';
j++;
}
for(i=0;i<m;i++)//进行相乘
{
for(j=0;j<n;j++)
{
z[i+j]=z[i+j]+x[i]*y[j];
}
}
for(i=0;i<2*N;i++)//进位核心
{
if(z[i]>=10)
{
z[i+1]=z[i+1]+z[i]/10;
z[i]=z[i]%10;
}
}
for(i=2*N;i>=0;i--)//排除最高位为零
{
if(z[i]!=0)
{
o=i;
break;
}
}
for(i=o;i>=0;i--)//倒序输出
{
printf("%d",z[i]);
}
printf("\n");
return 0;
}
大数乘法
最新推荐文章于 2024-08-29 20:40:47 发布