1. 程式人生 > >觀察-LeetCode172-階乘後的零

觀察-LeetCode172-階乘後的零

題目

給定一個整數 n,返回 n! 結果尾數中零的數量。

示例 1:

輸入: 3
輸出: 0
解釋: 3! = 6, 尾數中沒有零。
示例 2:

輸入: 5
輸出: 1
解釋: 5! = 120, 尾數中有 1 個零.
說明: 你演算法的時間複雜度應為 O(log n) 。

思路

要想產生0必須2*5。2的個數足夠,只需求出式子中有幾個5即可。

127!=...x5...x10...x15...x20...x25...x30...x35...x40...x45...x50...x55...x60...x65...x70...x75...x80...x85...x90...x95...x100...x105...x110...x115...x120...x125

...

觀察可以發現,127/5=25...2 。但是25=5*5、50=5*5*2、75=5*5*3、100=5*5*4、125=5*5*5中又可以分解出5。25/5=5...0。5/5=1...0。

程式碼

class Solution {
    public int trailingZeroes(int n) {
        if(n<5){
            return 0;
        }
        
        int res=0;
        
        res+=n/5;
        
        n=n/5;

        res+=trailingZeroes(n);
        return res;
    }
}