链接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
来源:牛客网
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:
输入为一行,n(1 ≤ n ≤ 1000)
输出描述:
输出一个整数,即题目所求
n的阶乘即为将所有小于等于n的正整数分解成因数1*2*3*4*5*...*n
相乘的形式。求末尾0的个数即为求10的个数而10=2*5;在分解的因数中2的个数远多余5的个数,也就是说总有足够多个2与5进行匹配。所以我们只需要求小于等于n的数的分解数中有多少个5就可以了。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ret =0;
for(int i=n;i>=5;i--){
int tmp =i;
while(tmp%5==0){
ret++;
tmp=tmp/5;
}
}
System.out.println(ret);
}
}