您的位置:首页 > 其它

51nod--1003 阶乘后面0的数量

2017-05-04 19:58 225 查看

题目描述

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注

n的阶乘后面有多少个0?

6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。

Input

一个数N(1 <= N <= 10^9)

Output

输出0的数量

Input示例

5

Output示例

1

解题思路

/*

10=2*5;因此求0的个数就是求因子2和因子5的对数,

又因为前n个数中因子2的个数,肯定比因子5的个数多,

因此题意便变成了求前n个数中因子5的个数。

又因为数据量是10e9,所以一个个数遍历一遍肯定会超时,

所以这里需要剪枝,因子5只要5,10 ,15,。。才有,所以

每隔5个数遍历即可,别的不需要遍历。这样数据量变成了10e8,

满足O(n)的时间复杂度

*/

代码

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = 0;
int tem =0;
for(int i=5; i<=n; i+=5){
tem = i;
while(tem % 5 ==0){
ans++;
tem /= 5;
}
}
System.out.println(ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法