60分崩溃了,求助大佬
查看原帖
60分崩溃了,求助大佬
1213698
s3149594002楼主2023/11/23 17:00
#define _CRT_SECURE_NO_WARNINGS 1

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

#define N 50010

int main()
{
	string A, B;
	int a[N], b[N], c[N] ;
	memset(c, 0, sizeof c);
	cin >> A >> B;
	int lena = A.length(), lenb = B.length();

	for (int i = lena - 1; i >= 0; i--)
		a[lena-i] = A[i] - '0';
	for (int i = lenb - 1; i >= 0; i--)
		b[lena-i] = B[i] - '0';

	for (int i = 1; i <= lena; i++)
		for (int j = 1; j <= lenb; j++)
			c[i + j-1] += a[i] * b[j];   //注意是  “+=”
	
	int len = lena + lenb;    //两个数的乘积位数小于等于两数位数之和
	for (int i = 1; i <= len; i++)
	{
		//c[i]在“计算贡献”时已经是各贡献值的和,因此比高精度和少了一步
		c[i + 1] += c[i] / 10;
		c[i] %= 10;

	}
	while (!c[len])
		len--;
	for (int i = max(1,len); i >=1; i--)   //用max是因为可能有 0 的情况
		cout << c[i];
}
2023/11/23 17:00
加载中...