每日一道算法题:大数乘法(c++实现)

题目描述:给出2个大整数A,B,计算A*B的结果

#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
char s[1001],k[1001];
int a[1001],b[1001],c[1001],d[1001]={0};
int len1,len2;
using namespace std;
void multplication(int *a,int *b)
{
	int lenl;
	for(int i=0;i<len2;i++)  
		for(int j=0;j<len1;j++)
			d[i+j]+=a[j]*b[i];
		lenl=len1+len2;//运算结果的最大位数
		for(int i=0;i<=lenl;i++)
		{
			d[i+1]+=d[i]/10;//进位运算
			d[i]%=10;
		}
          while(lenl&&d[lenl]==0)
		{
			lenl--;//将运算结果第一个非零数前的零去掉
		}

		for(int i=lenl;i>=0;i--)
		cout<<d[i];		

	}
	
	
	int main()
{

	gets(s);
	gets(k);
      len1=strlen(s);
      len2=strlen(k);
	for(int i=len1 -1,j=0;i>=0;i--)
	 
	 {
	 	 a[j++]=s[i]-'0';//将大数字符数组转化为整数数组 
	 }
	  for(int i=len2 -1,j=0;i>=0;i--)
	  {
	  b[j++]=k[i]-'0';//将大数字符数组转化为整数数组 
      }
        multplication(a,b);//大数乘法运算
	 return 0; 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值