实测可以跑60000的阶乘左右。

代码:

#include<bits/stdc++.h>

using namespace std;
#define BIT 1000000000
#define maxn 30000

struct x_num
{
    long long int a[maxn];
    int len;
};

int n;

x_num get_produce(x_num x,int c)
{
    //x_num ans;
    for(int i=0;i<x.len;i++)
    {
        x.a[i]*=(long long int)c;
    }
    for(int i=0;i<x.len;i++)
    {
        x.a[i+1]+=(x.a[i]/BIT);
        x.a[i]%=BIT;
    }
    if(x.a[x.len]!=0)x.len++;
    return x;
}

void output(x_num x)
{
    printf("%lld",x.a[--x.len]);
    while(x.len--)
    {
        printf("%09lld",x.a[x.len]);
    }
    printf("\n");
}

int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        x_num ans;
        memset(ans.a,0,sizeof(ans.a));
        ans.len=1;
        ans.a[0]=1;
        while(n--)
        {
            ans=get_produce(ans,n+1);
        }
        output(ans);
    }
}