高精度乘法

#算法

image.png

其他高精度详见CSDN博客: 高精度除法 高精度减法

C++代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 100005;
const int M = 10005;
int a[N] = { 0 }, b[M] = { 0 };
int c[N + M] = { 0 };
int main() {
	string s1, s2;
	cin >> s1 >> s2;
	int len1 = s1.size(), len2 = s2.size();
	reverse(s1.begin(), s1.end());
	reverse(s2.begin(), s2.end());
	for (int i = 0;i < len1;i++)a[i] = s1[i] - '0';//反向存储
	for (int i = 0;i < len2;i++)b[i] = s2[i] - '0';
	for (int i = 0;i < len1;i++)
		for (int j = 0;j < len2;j++)
			c[i + j] += a[i] * b[j];
	for (int i = 0;i < len1 + len2;i++) {
		c[i + 1] += c[i] / 10;//进位
		c[i] %= 10;
	}
	int k = N + M - 1;
	while (c[k] == 0)k--;
	for (int i = k;i >= 0;i--)cout << c[i];//反向输出
	return 0;
}


联系方式 - 如果你 喜欢 我的话~

GitHubbilibiliCSDN

ZHM