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

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

  1 #include<stdio.h>
  2 
  3 int main(void)
  4 {
  5     int num,count,i,j;
  6     i = count = 0;
  7     scanf("%d",&num);
  8     for(i=5; i<=num; i++)
  9     {
 10         j=i;
 11         while(j)
 12         {
 13             if(j % 5 == 0)
 14             {
 15                 count++;
 16                 j /= 5;
 17             }
 18             else
 19                 break;
 20         }
 21     }
 22     printf("%d
",count);
 23     return 0;
 24 }



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

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main(void)
 4 {
 5     int i,num;
 6     double result;
 7     scanf("%d",&num);
 8     result = 1.0;
 9     //数学公式 log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)+1 为10!的位数
10     for(i=1; i<=num; i++)
11     {
12         result += log10(i);
13     }
14     printf("%d",(int)result);
15     return 0 ;
16 }
原文地址:https://www.cnblogs.com/lhy5678888/p/4399374.html