悠游


私信TA

用户名:uq_87643911115

访问量:6721

签 名:

你好

等  级
排  名 42
经  验 12731
参赛次数 0
文章发表 206
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

大家好!我是糕手

解题思路:

注意事项:

参考代码:

#include<stdio.h>
#define MAXSIZE 100000
int main()
{
	int n;
	scanf("%d",&n);
	int a[MAXSIZE]={0};//数组要初始化为0
	a[0]=1;
	for(int i=2;i<=n;i++)
	{
	    int c=0;//存进位
	    for(int j=0;j<MAXSIZE;j++)
	    {
	        int t=a[j]*i+c;//举个例子,假如求4!,当i==4时,此时a[0]==6,t=6*4+0=24,a[0]=24%10=4,c=24/10=2,然后j==1时,t=0*i+2,最后a[0]==4,a[1]==2
	        a[j]=t%10;
	        c=t/10;
	    }
	}
	int *p=a+MAXSIZE-1;//指针从后往前
	while(p>=a&&*p==0)//为0时不要,继续递减
	{
	    p--;
	}
	while(p>=a)//到没有0后开始输出
	{
	    printf("%d",*p);
	    p--;
	}
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »