1476: L先生与阶乘
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 821 Solved: 310
[ Submit][ Status][ Web Board]
Description
没错,可怜的L先生又遇到了一道数学难题!
n的阶乘的末尾有多少个0?
Input
多测试例,处理到文件结束。(总测试例数量<15000)
每行有一个测试例,为一个非负整数n(0<=n<15000)。
Output
每个测试例对应的输出占一行
Sample Input
1
2
3
Sample Output
0
0
0
我们想,Y还能怎么样得到?举个例子 25的阶乘中,总共有6个五,其中5,10,15,20,各贡献一个,25贡献两个,也可以说成,5,10,15,20,25各贡献一个,25又额外贡献 一个,即5的倍数各贡献一个5,25的倍数各贡献一个5,即Y=[25/5] + [25/25]。同理,125中,5的倍数各贡献一个5,25的倍数各贡献一个5,125的倍数也各贡献一个5,所以Y=[125/5] + [125/25] + [125/125],所以可得公式:
Y = [N/5] + [N/52] + [N/53] + …
转载: 传送门
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
typedef long long LL;
int GetZeroNum(int n)
{
int num = 0;
while(n != 0)
{
num=num+n/5;
n=n/5;
}
return num;
}
int main()//因为统计了质数个数可以用在线判断用二分
{
int ret=0,i,n,j;
while(scanf("%d",&n)!=EOF){
ret=0;
for(i=1;i<=n;i++)
{
j=i;
while(j%5==0) {
ret++;
j/=5;
}
}
printf("%d\n",ret);
}
return 0;
}