代码如下:
//阶乘之和,n<=50;
#include <bits/stdc++.h>
using namespace std;
int a[101],sum[101],n,t;//t保留进位
int main()
{
cin>>n;
a[0]=sum[0]=1;
for(int i=2;i<=n;i++){
//获得i的阶乘
for(int j=0;j<100;j++){
a[j]*=i;
}
for(int j=0;j<100;j++){
t+=a[j];
a[j]=t%10;
t/=10;
}
//----------阶乘之和------------
for(int j=0;j<100;j++){
sum[j]+=a[j];
t+=sum[j];
sum[j]=t%10;
t/=10;
}
}
int k;
for(k=99;k>0&&sum[k]==0;k--);//找到末尾中第一个不为0的数
for(int i=k;i>=0;i--) cout<<sum[i];
return 0;
}