* *n!后面有多少个0**
Problem:118
Time Limit:1000ms
Memory Limit:65536K
Description
从输入中读取一个数n,求出n!中末尾0的个数。
Input
输入有若干行。第一行上有一个整数m,指明接下来的数字的个数。然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000。
Output
对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。
Sample Input
3
3
100
1024
Sample Output
0
24
253
在这里,我先普及一个知识点,这样好理解些我下面的代码:N!的素因子分解中的素数p的幂为
[n/p]+[n/(p^2)]+[n/(p^3)]+……
分析:对于n!,在因式分解中,2的因子个数是要总是要大于5的因子个数
(像5!=1*2*3*4*5=2^3*3*5,5的个数是1,那么5!就有1个0)
#include <cstdio>
int main()
{int m;scanf("%d",&m);while(m --){int n;scanf("%d",&n);int p = 5;int sum=0;while(p<=n){sum+=n/p;p=p*5;}printf("%d\n",sum);}return 0;
}