75分求调
查看原帖
75分求调
1612650
Aya_ylxatch楼主2025/1/28 15:29
#include<iostream>
#include<cstring>
using namespace std;
const int N=60,M=1010;
int n,a[N][M],len[N],x[N],maxx=-1,sum[M];//a[i][]第i个数的阶乘, len[i]第i个数的阶乘的长度 
int main(){
	//freopen("create.in","r",stdin);
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		a[i][1]=len[i]=1;
		x[i]=0;
		for(int k=2;k<=i;++k){
			for(int t=1;t<=len[i];++t){
				a[i][t]=a[i][t]*k+x[i];
				if(a[i][len[i]]>10)len[i]++;
				x[i]=a[i][t]/10;
				a[i][t]%=10;
			}
		}maxx=max(maxx,len[i]);
	}int q=0;
	for(int j=1;j<=maxx;++j){
		for(int i=1;i<=n;++i){
			sum[j]+=a[i][j];
		}sum[j]+=q;
		q=sum[j]/10;
		sum[j]%=10;
	}
	for(int i=maxx;i>0;--i)cout<<sum[i];
	return 0;
}
2025/1/28 15:29
加载中...