#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; }
注释:高精度的大体框架,方法可以应用到题里面。