主要采用拆项的方法:
#include <stdio.h>
#include <string.h>
#define maxnum 10000
void mulp(int a[],int b[],int alen,int blen);
void change(char s[],char t[]);
void change(char s[],char t[]){
int i,j,lens,lent;
int a[maxnum],b[maxnum];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
lens=strlen(s);
lent=strlen(t);
j=0;
for(i=lens-1;i>=0;i--)
a[j++]=s[i]-'0';
j=0;
for(i=lent-1;i>=0;i--)
b[j++]=t[i]-'0';
mulp(a,b,lens,lent);
}
void mulp(int a[],int b[],int alen,int blen){
int i,j,s,k,temp;
int c[maxnum];
memset(c,0,sizeof(c));
for(i=0;i<alen;i++){
for(j=0;j<blen;j++){
s=a[i]*b[j];
k=i+j;
while(s){
temp=c[k];
c[k]=(s+c[k])%10;
s=(temp+s)/10;
k++;
}
}
}
for(j=maxnum-1;j>=0;j--)
if(c[j])
break;
if(j==-1)
printf("%d\n",0);
else{
for(i=j;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
}
int main()
{
char num1[maxnum];
char num2[maxnum];
scanf("%s",num1);
scanf("%s",num2);
change(num1,num2);
return 0;
}