连接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
来源:牛客网
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 好比: n = 10; n! = 3628800,因此答案为2java
输入描述:spa
输入为一行,n(1 ≤ n ≤ 1000)
输出描述:code
输出一个整数,即题目所求
示例1递归
10
2
解题思路:末尾的0一定是由个位数2*个位数5获得,因为2的整数倍个数大于5的整数倍个数,因此只需求出5的整数倍个数便可,其中,有些数字不止含有一个5的因子,例如25,125,他们的商仍为5的整数倍,因此须要循环执行,直到x/5==0。get
package BiShiTi; import java.util.Scanner; /** * 思想:尾部全部的0都是由因子5*2获得的,因为因子2的个数远大于因子5的个数,因此只须要求出因子5的个数便可。 * 因为25,125这类数不止含有一个因子5,因此须要递归调用n/5 */ public class m_0022 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int count = FactorialHas0Num(n); System.out.println(count); } static int FactorialHas0Num(int n){ int count = 0; while(n != 0) { count += n/5; n = n / 5; } return count; } }