当前位置: 代码迷 >> 综合 >> 【Eternallyc】NEFU-118-n!后面有多少个0
  详细解决方案

【Eternallyc】NEFU-118-n!后面有多少个0

热度:15   发布时间:2023-12-26 01:01:30.0
                 * *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;
}