求调
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string hightime(string s1,string s2){
int a[100010],b[100010],c[100010];
int lens1=s1.size();
int lens2=s2.size();
for(int i=1;i<=lens1;i++){
a[i]=s1[lens1-i]-'0';
}
for(int i=1;i<=lens2;i++){
b[i]=s2[lens2-i]-'0';
}
for(int i=1;i<=lens1;i++){
for(int j=1;j<=lens2;j++){
c[i+j-1]+=a[i]*b[j];
}
}
int len=lens1+lens2;
for(int i=1;i<len;i++){
if(c[i]>9){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
while(c[len]==0&&len>1){
len--;
}
string t="";
for(int i=len;i>=1;i--){
t+=char(c[i]+'0');
}
return t;
}
string highplus(string s3,string s4){
int a1[10010]={0},b1[10010]={0},c1[10010]={0};
for(int i=0;i<s3.size();i++){
a1[s3.size()-i-1]=s3[i]-'0';
}
for(int i=0;i<s4.size();i++){
b1[s4.size()-i-1]=s4[i]-'0';
}
int llen=max(s3.size(),s4.size());
for(int i=0;i<llen;i++){
c1[i]=a1[i]+b1[i];
}
for(int i=0;i<llen;i++){
if(c1[i]>=10){
c1[i+1]=c1[i+1]+1;
c1[i]=c1[i]%10;
}
}
if(c1[llen]!=0){
llen++;
}
string t="";
for(int i=llen-1;i>=0;i--){
t+=char(c1[i]+'0');
}
return t;
}
int main(){
ll n;
cin>>n;
string a="1",sum="";
for(int i=1;i<=n;i++){
string temp=to_string(i);
a=hightime(a,temp);
sum=highplus(sum,a);
}
cout<<sum;
return 0;
}