c 有关N!阶乘的相关问题----陆续补充上来

时间:2021-05-30 15:21:24

第一个:求N!结果中末尾0的个数问题。思路是末尾0的产生   5*偶数,阶乘中偶数的个数肯定比5多,所以求出阶乘中5的个数就可以求出末尾0的个数。

   #include<stdio.h>

   int main(void)
{
int num,count,i,j;
i = count = ;
scanf("%d",&num);
for(i=; i<=num; i++)
{
j=i;
while(j)
{
if(j % == )
{
count++;
j /= ;
}
else
break;
}
}
printf("%d\n",count);
return ;
}

第二个:N!中位数有多少个,主要是要记得数学公式,要不然要去累加也够呛的。

 #include<stdio.h>
#include<math.h>
int main(void)
{
int i,num;
double result;
scanf("%d",&num);
result = 1.0;
//数学公式 log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)+1 为10!的位数
for(i=; i<=num; i++)
{
result += log10(i);
}
printf("%d",(int)result);
return ;
}