#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Max 2000
void multiply(char *a,char *b,char *c)
{
int i,j,lena,lenb,*s;
lena=strlen(a);
lenb=strlen(b);
s=(int*)malloc(sizeof(int)*(lena+lenb));
for (i=0;i<lena+lenb;i++)
s[i]=0;
for (i=0;i<lena;i++)
for (j=0;j<lenb;j++)
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
for (i=lena+lenb-1;i>=0;i--)
if (s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
i=0;
while (s[i]==0)
i++;
if(i>lena+lenb-1)
strcpy(c,"0");
else
{
for (j=0;i<lena+lenb;i++,j++)
c[j]=s[i]+'0';
c[j]='\0';
}
free(s);
}
int main()
{
char a[200],b[200],c[200];
while(scanf("%s%s",a,b)!=EOF)
{
multiply(a,b,c);
puts(c);
}
return 0;
}
大数乘法 可调用
最新推荐文章于 2022-12-19 19:19:20 发布