从输入中读取一个数n,求出n!中末尾0的个数。
输入格式:
输入有若干行。第一行上有一个整数m,指明接下来的数字的个数。然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000。
输出格式:
对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。
输入样例:
3
3
100
1024
输出样例:
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执行)
#include<stdio.h>
int 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("%d\n",cou);
}
return 0;
}