#include<bits/stdc++.h>
using namespace std;
int main(){
int a[30005]={},b[20005]={},c[20005]={},dl,el=1,n=3249,ws;
cin>>ws;
dl=ws+1;
b[0]=1;
a[ws]=1;
for(int i=n;i>=1;i--){
for(int j=0;j<el;j++)b[j]*=i;
for(int j=0;j<el+10;j++){
b[j+1]+=b[j]/10;
b[j]%=10;
}
for(int j=el+10;b[j]==0;j--)el=j;
for(int j=ws;j<ws+el;j++)a[j]+=b[j-ws];
for(int j=ws;j<dl+10;j++){
a[j+1]+=a[j]/10;
a[j]%=10;
}
for(int j=dl+10;a[j]==0;j--)dl=j;
}
for(int i=dl-el;i>=0;i--){
for(int j=1;j<=9;j++){
int p=0;
for(int k=i+el;k>=i;k--){
if(b[k-i]>a[k]){
p=1;
break;
}else if(b[k-i]<a[k]){
break;
}
}
if(p)break;
for(int k=i;k<=i+el;k++){
a[k]-=b[k-i];
if(a[k]<0){
a[k+1]--;
a[k]+=10;
}
}
c[i]=j;
}
}
int x=-1;
for(int i=dl-el+2;i>=0&&c[i]==0;i--)x=i;
cout<<c[x-1]<<".\n";
for(int i=x-2;i>=0;i--){
if((x-i-2)%5==0&&(x-i-2)%50!=0)cout<<" ";
if((x-i-2)%50==0&&i!=x-2)cout<<"\n";
cout<<c[i];
}
return 0;
}
自己测试了一下,4500位左右就会超时