1,3,4点没过,但是1~50的结果用计算器算了,输出没有问题,但不知道为什么过不了测试点,球球大佬修改
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000;
long long n,sum[MAXN],a[MAXN];
bool f=0;
int main()
{
cin>>n;
a[1]=sum[1]=1;
if(n==0||n==1)
{
cout<<"1";
return 0;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<=MAXN;j++)
a[j]*=i;
for(int j=1;j<=MAXN;j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
for(int j=1;j<=MAXN;j++)
{
sum[j]+=a[j];
sum[j+1]+=sum[j]/10;
sum[j]%=10;
}
}
for(int i=MAXN;i>=1;i--)
{
if(sum[i]!=0)
f=1;
if(f)
cout<<sum[i];
}
return 0;
}
```