题目描述:
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 }
时间: 2024-10-19 17:35:29