【编程题m_0022】末尾0的个数

连接: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;
	}
}
相关文章
相关标签/搜索