Rain3721 @ 2024-11-08 17:09:07
#include<bits/stdc++.h>
using namespace std;
#define MAX 20000
int a[MAX]={0},b[2]={0},ans[MAX]={};
int checkmult(){
for(int i=0;i<MAX;i++){
if(a[MAX-i-1]>9){
a[MAX-i-2]+=a[MAX-i-1]/10;
a[MAX-i-1]%=10;
}
}
return 0;
}
int add(){
for(int i=0;i<MAX;i++){
ans[MAX-1-i]+=a[MAX-1-i];
if(ans[MAX-1-i]>9){
ans[MAX-i-2]+=ans[MAX-i-1]/10;
ans[MAX-i-1]%=10;
}
}
return 0;
}
int mult(int n){
int c[MAX]={0};
b[0]=n/10,b[1]=n%10;
for(int i=0;i<2;i++){
for(int j=0;j<MAX;j++){
c[MAX-i-j-1]=b[1-i]*a[MAX-1-j];
}
checkmult();
}
for(int k=0;k<MAX;k++) a[k]=c[k];
return 0;
}
void printans(){
int j=0;
for(j;j<MAX;j++) if(ans[j]>0) break;
if(j==MAX) cout<<0;
else for(int i=j;i<MAX;i++) cout<<ans[i];
}
void print(){
int j=0;
for(j;j<MAX;j++) if(a[j]>0) break;
if(j==MAX) cout<<0;
else for(int i=j;i<MAX;i++) cout<<a[i];
}
int main(){
int n; cin>>n;
a[MAX-1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
mult(j);
}
add();
/*cout<<b[0]<<b[1]<<" ";
print();
cout<<" ";
printans();
cout<<endl;*/
for(int k=0;k<MAX;k++) a[k]=0;
a[MAX-1]=1;
}
printans();
return 0;
}