close

題目

  Given an integer n, return the number of trailing zeroes in n!.

想法

  要求出尾端有幾個 0,不用把階層求出來,只要算當中有幾個 5,5x2 即會產生 0,但要注意 25 有兩個 5,以此類推 125...。

階層 2 是不缺少的,因此在意 5 就好,舉例,25!,除以 5 表示有 5 個 5,但其實,25 有 6 個 5,必須將 25/5 = 5 後再檢查一次。

code

int trailingZeroes(int n) {
    int res = 0;
    while (n>=5) {
        res += n/5;
        n/=5;
    }
    return res;
}

arrow
arrow
    全站熱搜

    Davis 發表在 痞客邦 留言(0) 人氣()