#include<iostream> #include<cstdio> using namespace std; int ans[10000000];//存放n!的结果 int main() { int n,i,j,k,len; while(~scanf("%d",&n)) { ans[1]=1; len=1; for(i=2;i<=n;i++) { for(j=1;j<=len;j++)//边乘边进位 { ans[j]=ans[j]*i+ans[j-1]/10; ans[j-1]%=10; } while(ans[len]>=10)//判断最高位是否需要进位 { len++; ans[len]=ans[len-1]/10; ans[len-1]%=10; } } for(i=len;i>1;i--) printf("%d",ans[i]); printf("%d\n",ans[1]); } return 0; }