文章

36

粉丝

505

获赞

55

访问

370.6k

头像
题解:大整数乘法
P1475
发布于2020年3月15日 20:56
阅读数 8.5k

用数组模拟

#include<bits/stdc++.h>
using namespace std;
int a[105], b[105], c[210];
int main()
{
	int n;	
	string A, B;
	cin >> n >> A >> B;
    //字符转换成数字,反着记录,方便之后做乘法也要从后往前操作
	for (int i = n - 1; i >= 0; i--)
		a[n - i] = A[i] - '0';
	for (int i = n - 1; i >= 0; i--)
		b[n - i] = B[i] - '0';
    //关键代码,模拟乘法,a的第i位乘以b的第j位最后会加到结果的第i+j-1位
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			c[i + j - 1] += a[i] * b[j];
    //进位操作
	int len = 2 * n;
	for (int i = 1; i <= len; i++)
	{
		c[i + 1] += c[i] / 10;
		c[i] %= 10;
	}
    //去除前面多余的0
	while (!c[len])
		len--;
    //反着输出
	for (int i = len; i >= 1; i--)
		cout << c[i];
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发