wangyuzhe11 @ 2024-12-16 22:33:05
#include<bits/stdc++.h>
using namespace std;
#define db=double;
string is(int a){
string s="";
while(a>0){
int k=a%10;
s=(char)(k+'0')+s;
a/=10;
}
return s;
}
string ans="",ans2="";
void add(string a,string b){
int s1=a.size(),s2=b.size();
string k="";
int l=0;
if(s2>=s1){
for(int i=s1-1;i>=0;i--){
int m1=a[i]-'0',m2=b[i-(s1-s2)]-'0';
int x=m1+m2+l;
if(x<10){
l=0;
k=(char)(x+'0')+k;
}else{
l=1;
x-=10;
k=(char)(x+'0')+k;
}
}
for(int i=s2-s1-1;i>=0;i--){
int m=b[i]-'0';
int x=m+l;
if(x<10){
l=0;
k=(char)(x+'0')+k;
}else{
l=1;
k=(char)((x-10)+'0')+k;
}
}
if(l==1)k='1'+k;
}
else{
for(int i=s2-1;i>=0;i--){
int m1=a[i-(s2-s1)]-'0',m2=b[i]-'0';
int x=m1+m2+l;
if(x<10){
l=0;
k=(char)(x+'0')+k;
}else{
l=1;
x-=10;
k=(char)(x+'0')+k;
}
}
for(int i=s1-s2-1;i>=0;i--){
int m=a[i]-'0';
int x=m+l;
if(x<10){
l=0;
k=(char)(x+'0')+k;
}else{
l=1;
k=(char)((x-10)+'0')+k;
}
}
if(l==1)k='1'+k;
}
for(int i=0;i<k.size();i++)ans[i]=k[i];
}
void fx(string a,string b){
int l=0;
int s1=a.size(),s2=b.size();
string s="";
if(s1<s2){
swap(s1,s2);
swap(a,b);
}
for(int i=0;i<s2;i++){
for(int j=s1-1;j>=0;j--){
int k1=(int)(b[i]-'0')*(int)(a[i]-'0');
char k=(char)(k1+'0');
if(k<10){
if(l!=0){
l=0;
s=(char)(k+l-'0')+s;
}
else{
l=0;
s=(char)(k-'0')+s;
}
}else{
if(l!=0){
l=k/10;
k%=10;
s=(char)(k+l-'0')+s;
}else{
l=k/10;
k%=10;
s=(char)(k-'0')+s;
}
}
}
add(s,ans2);
ans2=ans;
}
}
string x="";
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
string a="1";
for(int j=1;j<=i;j++){
fx(is(j),a);
a=ans2;
}
add(a,x);
x=ans;
}
for(int i=0;i<x.size();i++)cout<<x[i];
return 0;
}