从输入中读取一个数n,求出n!中末尾0的个数。
输入格式:
输入有若干行。第一行上有一个整数m,指明接下来的数字的个数。然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000。
输出格式:
对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。
输入样例:
3
3
100
1024
输出样例:
0
24
253
0 24 253
要判断末尾有几个0就是判断可以整除几次10。10的因子有5和2,而在0~9之间5的倍数只有一个,2的倍数相对较多,所以本题也就转换成了求N阶乘中有几个5的倍数。如,125/5 + 25/5 +5/5=31{125/5 + 25/5 +5/5=3(如下面while执行)
#includeint main() { int n,k; int cou; scanf("%d",&n); for(int i=1;i<=n;i++) { cou=0; scanf("%d",&k); while(k/=5) { cou+=k;//算出当前数字中可以匹配5(5和5的倍数)的个数并累加 } printf("%dn",cou); } return 0; }



