转自http://blog.youkuaiyun.com/cm_yali/article/details/50607751
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[30001];
long long a[15000],b[15000],c[50001];
int main ()
{
int alen,blen,clen;
int i,j,k,m,n;
gets(s);
alen=strlen(s);
k=0;
for(i=alen-1;i>=0;i-=3){
long long tmp=0;
int start;
start=i-2;
if(start<0)start=0;
for(j=start;j<=i;j++)
tmp=tmp*10+s[j]-'0';
a[++k]=tmp;
}
alen=k;
gets(s);
blen=strlen(s);
k=0;
for(i=blen-1;i>=0;i-=3){
long long tmp=0;
int start;
start=i-2;
if(start<0)start=0;
for(j=start;j<=i;j++)
tmp=tmp*10+s[j]-'0';
b[++k]=tmp;
}
blen=k;
for(i=1;i<=alen;i++)
for(j=1;j<=blen;j++)
c[i+j-1]+=a[i]*b[j];
clen=alen+blen;
while(c[clen]==0 && clen>1)
clen--;
for(i=1;i<clen;i++)
if(c[i]>=1000){
c[i+1]+=c[i]/1000;
c[i]%=1000;
}
printf("%lld",c[clen]);
for(i=clen-1;i>=1;i--){
if(c[i]<10)printf("00");
else if(c[i]<100)printf("0");
printf("%lld",c[i]);}
return 0;
}