0
点赞
收藏
分享

微信扫一扫

【基础算法】高精度乘法

龙驹书房 2022-02-27 阅读 81

用途

用于两个巨大数的相乘计算

乘法核心

 代码实现

#include <bits/stdc++.h>
using namespace std;

const int num=1e4;
char ca[num],cb[num];
int a[num],b[num],c[num];

void demo(char n1[],char n2[]){
	int len1=strlen(n1),len2=strlen(n2);
	int len=len1*len2;
	for(int i=1;i<=len1;++i){
		a[i]=n1[len1-i]-'0';//把字符数转化为数字并反转 
	}
	for(int i=1;i<=len2;++i){
		b[i]=n2[len2-i]-'0';
	}
	for(int i=1;i<=len1;++i){
		for(int j=1;j<=len2;++j){
			c[i+j-1]+=a[i]*b[j];//同一位上的乘数相加之和,还有个进位值 
			c[i+j]+=c[i+j-1]/10;//进位 
			c[i+j-1]%=10;//取余 
		}
	}
	while(c[len]==0)	len--;
	for(int i=len;i>0;--i){
		cout<<c[i]; 
	}
} 

int main(){
	cin>>ca>>cb;
	demo(ca,cb);
	return 0 ;
}

//测试乘数1	16856187648765187984
//测试乘数1	51111624688516487651764915687367841956345
//测试积1	861547136782893467654394856346186137093705717479566246558480
举报

相关推荐

0 条评论