【編程題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;
	}
}
相關文章
相關標籤/搜索