高精度乘法

#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;
}

  注释:高精度的大体框架,方法可以应用到题里面。

原文地址:https://www.cnblogs.com/saber114567/p/8390970.html