#include <cstdio>
void function(int ans[],int n)
{
int cnt=0;
int i,j;
ans[1]=1;
ans[2]=-1;
for( i=1;i<=n;i++)
{
// printf("i==%d\n",i);
for( j=1;ans[j]!=-1;j++ )
{
int cnt0=(i*ans[j]+cnt)/10;
ans[j]=(i*ans[j]+cnt)%10;
// printf("j==%d\n",j);
//printf("\n");
// printf("a[%d]==%d ",j,ans[j]);
// printf("sssssssssssssss\n");
// printf("\n");
cnt=cnt0;
// printf("%d\n ",cnt );
}
for(;;)
{
if(cnt/10!=0)
{
ans[j++]=cnt%10;
cnt=cnt/10;
}
if(cnt/10==0)
{
if(cnt==0)
{
ans[j]=-1;
break;
}
else
{
ans[j]=cnt;
ans[j+1]=-1;
break;
}
}
}
cnt=0;
}
int k;
for(k=1;ans[k]!=-1;k++);
for(j=k-1;j>=1;j--)
{
printf("%d",ans[j]);
}
printf("\n");
}
int main()
{
int ans[100000]={0};
int n;
while(scanf("%d",&n)!=EOF)
{
function(ans,n);
}
return 0;
}
1到1000的阶乘
猜你喜欢
转载自blog.csdn.net/qq_34552393/article/details/80006075
今日推荐
周排行