#include<stdio.h>
#include<string.h>
#define N 10000
int main()
{
char shu[N],shu1[N];
int a,b,c,q=0,p=0,m[N],n[N],sum[100000],i,j,h,l;
scanf("%s %s",&shu,&shu1);
a=strlen(shu);
b=strlen(shu1);
for(q=1,c=a-1;q<=a;q++,c--)
{
m[q]=shu[c]-'0'; //转换数组中的数个位从1开始
}
for(p=1,c=b-1;p<=b;p++,c--)
{
n[p]=shu1[c]-'0';
}
for(i=1;i<=a;i++)
for(j=1,l=i-1;j<=b;j++)
{
sum[++l]+=m[i]*n[j]; //这里是推倒出来的规律,记住呗
}
for(c=1;c<=l;c++)
{
if(sum[c]>=10)
{
if(sum[l]>=10)
{
h=sum[c]/10;
sum[c+1]+=h;
sum[c]=sum[c]%10;
l++;
}
else
{
h=sum[c]/10;
sum[c+1]+=h;
sum[c]=sum[c]%10;
}
}
}
for(c=l;c>=1;c--)
{
printf("%d",sum[c]);
}
return 0;
}
注释:高精度的大体框架,方法可以应用到题里面。