最后一个测试点求助
查看原帖
最后一个测试点求助
1105444
k2772840591楼主2023/10/29 12:00

求助大佬 题目说两个数都是2000位以下,为什么a和b两个数组开到2500都不够,但是开到4000就够了呀

#include<iostream>
#include<string>
using namespace std;
int a[2500],b[2500],c[4500];
int main()
{
	string A,B;
	cin>>A>>B;
	a[0]=A.length(),b[0]=B.length();
	int len=a[0]+b[0];
	for(int i=1;i<=a[0];i++)
	    a[i]=A[a[0]-i]-'0';
	for(int i=1;i<=b[0];i++) 
	    b[i]=B[b[0]-i]-'0';
	for(int i=1;i<=len;i++)
	    for(int j=1;j<=len;j++)
	        c[j+i-1]+=a[i]*b[j];
	for(int i=1;i<=len;i++)
	{
		c[i+1]+=c[i]/10;
		c[i]%=10; 
	}
	while(c[len]==0&&len>1) len--;
	
	for(int i=len;i>0;i--)
	cout<<c[i];
	return 0;
}
2023/10/29 12:00
加载中...