运行时间太长,求简化,在5000ms计算10000的阶乘
#include <iostream>#define N 50000
using namespace std;
int main()
{
int p[N],i,j,n,k;
while(scanf("%d",&n)!=EOF)
{
k=0;
for(i=0;i<N;i++)
p[i]=0;
p[N-1]=1;
for(i=1;i<=n;i++)
{
int temp_jw=0;
for(j=N-1;j>=0;j--)
{
p[j]=p[j]*i+temp_jw;
temp_jw=p[j]/10;
p[j]=p[j]%10;
}
}
for(i=0;i<N;i++)
if(p[i]==0&&p[i+1]!=0)
{
k=i;
break;
}
for(i=k;i<N;i++)
cout<<p[i];
cout<<endl;
}
}