#include<bits/stdc++.h>
using namespace std;
int main()
{
int num,len;
int n[20];//用来储存阶乘结果
int x[20];//用来储存累计的和
int t[20];//用来求阶乘
memset(n,0,20);
memset(x,0,20);
n[0]=1;
cin>>num;
for(int i=1;i<=num;i++)
{
memset(t,0,20);
for(int k=0;k<20;k++)//求阶乘
{
t[k]+=n[k]*i;
t[k+1]=t[k]/10;
t[k]=t[k]%10;
if(t[k+1]==0)
break;
}
for(int m=0;t[m]>0;m++)//复制数据
{
n[m]=t[m];
}
for(int j=0;j<20;j++)//求和
{
x[j]+=n[j];
x[j+1]=x[j]/10;
x[j]=x[j]%10;
if(x[j+1]==0)
{
len=j;
break;
}
}
}
while(len>=0)//遍历输出
{
cout<<x[len];
len--;
}
return 0;
}
~~~