标签:
题目描述:
n的阶乘后面有多少个0?
一个数N(1 <= N <= 10^9)
输出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 }
标签:
原文地址:http://www.cnblogs.com/clairvoyant/p/4862568.html