每位存4个数。
#include<stdio.h>
#include<string.h>
const int maxn=10001;
const int mod=10000;
int a[maxn];
int main()
{
int n,i,j,s,m,k;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
a[0]=1,s=0,m=1;
for(i=2;i<=n;i++)
{
k=0;
for(j=s;j<m;j++)
{
a[j]=a[j]*i+k;
k=a[j]/mod;
a[j]%=mod;
}
if(k) a[m++]=k;
while(a[s]==0) s++;
}
printf("%d",a[m-1]);
for(i=m-2;i>=0;i--)
printf("%04d",a[i]);
printf("\n");
}
return 0;
}