首页 > 技术文章 > 1003 阶乘后面0的数量

clairvoyant 2015-10-08 22:34 原文

题目描述:

n的阶乘后面有多少个0?

6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。
Input
  一个数N(1 <= N <= 10^9)
Output

  输出0的数量

每个数阶乘末尾的零是由前面阶乘数字中的因子2和因子5相乘而造成的,又因为5比2多,所以只需考虑5的个数。每隔5个数,会产生一个0,如5、10、15...;每隔25个数,会多产生一个0,即两个0,如25/50/75...;每隔125个数,会多产生一个0,即三个0,如125、625...等等。即每次将除以5后的数相加即可得到阶乘后面的数量。

代码如下:

 1 #include<stdio.h>
 2 int main (void)
 3 {
 4     unsigned int a, b = 0;
 5     scanf("%d", &a);
 6     while(a != 0){    
 7         a = a / 5;
 8         b += a;
 9     }
10     printf("%d", b);
11     return 0;
12 }

 

推荐阅读