求助
查看原帖
求助
356277
Thenyu楼主2020/11/29 14:47
#include<bits/stdc++.h>
using namespace std;
long long n,a[10005],b[10005],at,bt;
void qjc(int x)
{
	fill(a,a+at+1,0),at=0;
	a[1]=1,at=1;
    for(int i=2;i<=x;i++)
    {
    	for(int j=1;j<=at;j++)
    		a[j]*=i;
    	for(int j=1;j<=at;j++)
    		if(a[j]>=10)a[j+1]+=a[j]/10,a[j]%=10;
    	while(a[at+1]>0)at++;
    }
}
int main()
{
    cin>>n;
    b[1]=1,bt=1;
    for(int i=2;i<=n;i++)
    {
    	qjc(i);
    	for(int j=at;j>=1;j--)
    		b[j]+=a[j];
    	for(int j=at;j>=1;j--)
    		if(b[j]>=10)b[j+1]+=b[j]/10,b[j]%=10;
    	bt=at;
    	while(b[bt+1]>0)bt++;
    }
    for(int i=bt;i>=1;i--)
    	cout<<b[i];
    return 0;
}
2020/11/29 14:47
加载中...