Leetcode 172. Factorial Trailing Zeroes

關關的刷題日記發表於2018-01-08

給定一個整數n,求n的階乘有多少個字尾0.

 

思路:n!=1*2*3*……*n,判斷這個數有多少個字尾0,通過觀察我們可以發現每當出現一個約數2和一個約數5,就可以產生一個字尾0,只要是偶數中都存在2這個約數,所以2的數目肯定比5多,所以只需要判斷約數5的個數,就是所求。需要注意的是,25、50這樣的約數裡面含有2個約數5.

 

方法1:迴圈

class Solution {
public:
    int trailingZeroes(int n) {
        int re=0;
        while(n>=5)
        {
            n/=5;
            re+=n;
        }
        return re;
    }
};

方法2:遞迴

class Solution {
public:
    int trailingZeroes(int n) {
    return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);              
    }
};



相關文章