連接: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; } }