n!后面有多少个0 | ||
| ||
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 |
如果说末尾为0,那么肯定可以分解为2*5的形式。因此,每个0肯定对应一对2*5,所以只要求出有多少对2*5就知道末尾有多少0了,而n!在因式分解中,2的因子个数肯定要大于5的因子个数,所以只要求出5的因子个数就是本题的解。
根据性质可知:n!在素因子分解中的素数p的幂为[n/p]+[n/p^2]+[n/p^3]+...所以就可直接求出。
//696k 3ms
#include<stdio.h>
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int yinzi=5,sum=0;
while(yinzi<=n)
{
sum+=n/yinzi;//n/yinzi^i
yinzi*=5;
}
printf("%d\n",sum);
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务