我的结果就是了..
#include <stdio.h>
#include <stdlib.h>
#define N 99
//要计算的N
#define P 10000
long s[N]={1,1},t,a,b;
void factorial(long s[],long n)
{
s[0]=1;s[1]=1;
t=2,a=1,b=0;
for(int i=2;i<N;s[i]=0,++i);
for(;a<=*s||(++t<=n?(b=0,a=1):0);(*s==a++&&b)?(*s)++:0)
s[a]=(b+=s[a]*t)%P,b/=P;
}
void add(long sum[],long s[])
{
for(int i=1;i<=s[0];++i)
if((sum[i]+=s[i])>9999) {sum[i]%=10000,sum[i+1]++;}
}
int main()
{
int i=3;
long sum[N]={1,1};
for(;i<=N;factorial(s,i),add(sum,s),i+=2);
printf("%d",sum[s[0]]);
for(i=s[0]-1;i>0;printf("%04d",sum[i]),--i);
putchar('\n');
system("pause");
return 0;
}