求10000的阶乘
如何求10000的阶乘,我的代码总是超时#include<stdio.h>
__int64 a[10000]={0};
int main()
{
__int64 n,i,j,k,c;
while(scanf("%I64d",&n)!=EOF)
{
if(n==1) printf("1\n");
else
{
__int64 *p;
a[1]=1;k=1;
p=&a[1];
for(i=2;i<=n;i++)
{ p=&a[1];
for(j=1,c=0;j<=k;j++,p++)
{*p=(*p)*i+c;
c=(*p)/1000;
*p=(*p)%1000;}
while(c!=0)
{
a[k]=c%1000;
c=c/1000;
k++;
}
}
p=&a[k];
for(i=k;i>=1;i--,p--)
printf("%I64d",*p);
printf("\n");
}
}
}