75分求助
查看原帖
75分求助
409774
Maysoul楼主2023/3/31 11:26

下了测试点发现 n=48时

输出是

12678163798554051767172643373255731925167694226950680420940313

我的输出是

-5-4-90-5-8-8-7-1-10-30-1-3-5-9-7-6-9-6-1-5-7-4-9-7-6-3-1-5-4-7213-46

根本不知道为什么会输出负号

求大佬帮调

//2023/3/31
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int jie[10000000];
int he[10000000];
int main()
{
	int n;
	int len=1,len1=1;
	int z=0,s=0;
	jie[0]=1;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=i;j++)
		{
			for (int k=0;k<len;k++)
			{
				jie[k]*=j;
				jie[k]+=z;
				z=jie[k]/10;
				if(jie[k]>=10)
				{
					jie[k]%=10;
				}
				
			}
			if(z>0)
			{
				jie[len]+=z;
				len++;
				z=0;
			}
		}
		len1=len;
		for (int j=0;j<len1;j++)
		{
			he[j]+=jie[j];
			he[j]+=s;
			s=he[j]/10;
			he[j]%=10;
		}
		if(s>0)
		{
			he[len1]+=s;
			len1++;
			s=0;
		}
		/*for (int i=len1-1;i>=0;i--)
		{
			cout<<he[i];
		}
		cout<<endl;*/
		
		for (int j=0;j<len;j++)
		{
			jie[j]=0;
		}
		jie[0]=1;
		len=1;
	}
	for (int i=len1-1;i>=0;i--)
	{
		cout<<he[i];
	}
	return 0;
}


2023/3/31 11:26
加载中...