大数相乘

大数乘法的实现也比较容易理解,相信看了下面的代码,细心分析下就知道了,具体也就不作什么详细分析了。

==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==

 

 

#include<stdio.h>
#include<string.h>

int main()
{
	char a[100],b[100];
	int ans[200],res[100][100]={0};     //这里一定要全部初始化为0
	int sum=0 ,i ,j ,k=0,t ,alen ,blen;
	scanf("%s%s",&a,&b);
	alen=strlen(a);
	blen=strlen(b);
	//将a中每位数与b中每位数相乘,下面将结果存入数组中
	for(i=0;i<alen;i++)
		for(j=0;j<blen;j++)
		{
			res[i][j]=(a[i]-48)*(b[j]-48);
		}
	//计算res右下半个三角数的和
	for(i=alen-1;i>=0;i--)
	{
		for(j=blen-1;j>=0;j--)
			sum+=res[i+blen-1-j][j];
		ans[k]=sum%10;
		k++;
		sum/=10;
	}
    //计算res左上半个三角数的和
	for(i=blen-2;i>=0;i--)
	{
		for(j=0;j<=i;j++)
			sum+=res[i-j][j];
		ans[k]=sum%10;
		k++;
		sum/=10;
	}
	if(sum)
	{
		ans[k]=sum;
		k++;
	}
	//输出结果
	printf("ans = ");
	for(t=k-1;t>=0;t--)
		printf("%d",ans[t]);
	printf("\n");
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值