代码丑陋,见谅见谅.
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
int res[N],len=0;
void get_res(int k)
{
int a[N]={0},c[N]={0};
int lena=0,x=k;
while(x)
{
a[lena++]=x%10;
x/=10;
}
for(int j=0;j<=len;j++)
{
int up=0;
for(int i=0;i<lena;i++)
{
c[i+j]+=a[i]*res[j]+up;
up=c[i+j]/10;
c[i+j]%=10;
}
c[lena+j]=up;
}
int n=(max(len,lena)*2)-1;
while(c[n]==0&&(n)>0)
n--;
len=n;
memset(res,0,sizeof res);
for(int i=0;i<n;i++)
res[i]=c[i];
}
int main()
{
res[1]=1;
int n;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
get_res(i);
}
for(int i=len;i>=0;i--)
printf("%d",res[i]);printf("\n");
return 0;
}