#include <bits/stdc++.h>
using namespace std;
string A(string& a,int i)
{
string s="";
int cant=0;
while(a!="" || cant!=0)
{
int x=(a.empty())?0:a[a.size()-1]-'0';
s+=(char)(((x*i)%10+cant%10)%10+'0');
cant=(x*i)/10+cant/10+((x*i)%10+cant%10)/10;
if(!a.empty())
a.pop_back();
}
reverse(s.begin(),s.end());
return s;
}
string B(string a,string b)
{
int cant=0;
string s="";
while(a!=""||b!=""||cant!=0)
{
int x=(a.empty())?0:a[a.size()-1]-'0';
int y=(b.empty())?0:b[b.size()-1]-'0';
s+=(char)((x+y+cant)%10+'0');
cant=(x+y+cant)/10;
if(!a.empty())
a.pop_back();
if(!b.empty())
b.pop_back();
}
reverse(s.begin(),s.end());
return s;
}
int main()
{
long long n;
string a="1",b="1";
cin >>n;
for(int i=2;i<=n;i++)
{
a=A(a,i);
b=B(a,b);
}
cout <<b;
}
A函数是大整数的乘法 B函数是大整数的加法 字符串a为i! b为Si,及i的前阶层项和