题目描述
链接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
来源:牛客网
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:
输入为一行,n(1 ≤ n ≤ 1000)
输出描述:
输出一个整数,即题目所求
示例1
输入
10
输出
2
思路分析
首先我们思考一下,要乘出0,我们先只考虑0-9,发现25 = 10,45 = 20,65 = 30,85 =40。要使结果末尾为0必须有5,再来看10,这肯定有0,那么10也可以拆开成2 和 5 的乘机,同样25 能拆成5 * 5.所以我们只要统计出5的个数,25就包含2个5,125就包含3个5,,,,就这样计算出每个数拆成不可分的因子后,总共5的个数也就是末尾0的个数。
代码实现
import java.util.Scanner;
/**
* @ Created with IntelliJ IDEA.
* @ClassName Test
* @Description
* @Author by小房
* @Date 2020/7/8 17:24
*/
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()) {
int n = scanner.nextInt();
int count = 0;
for (int i = n; i >=1 ; i--) {
int tmp = i;
//统计每个数包含5这个因子的个数
while (tmp %5 == 0 ) {
count++;
tmp /= 5;
}
}
System.out.println(count);
}
}
}