P1009
代码
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define endl "\n"
using namespace std;
int a[10000005],c[10000005],a1=1,c1=1;
void jia(){
int l=max(a1,c1);
for(int i=1;i<=l;i++){
if(i==l){
if(a[i]+c[i]>=10){
c1=l+1;
}
else{
c1=l;
}
}
c[i]+=a[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
}
void cheng(int k){
int p=0;
int f=0,l=a1;
for(int i=1;i<=l;i++){
if(i==l){
if(a[i]*k+f>=100){
l+=2;
p=1;
}
else if(a[i]*k+f>=10){
a1=l+1;
}
else{
a1=l;
}
}
if(p==1){
f=a[i]/10;
a[i]=a[i]%10;
a[i+1]+=f;
}
else{
f=(a[i]*k)/10;
a[i]=(a[i]*k)%10;
a[i+1]+=f;
}
}
}
int main(){
long long n,cnt=0;
cin>>n;
a[1]=1;
c[1]=1;
for(long long i=2;i<=n;i++){
cheng(i);
jia();
}
for(int i=c1;i>=1;i--){
cout<<c[i];
}
return 0;
}