LintCode 2 : 尾部的零(java實現)

  • 題目

    設計一個算法,計算出n階乘中尾部零的個數

  • 樣例

    11! = 39916800,因此應該返回 2

  • 代碼

public class Solution {
    /*
     * @param n: An integer
     * @return: An integer, denote the number of trailing zeros in n!
     */
    public long trailingZeros(long n) {
        // write your code here, try to do it without arithmetic operators.
        long count = 0;
        for(int i = 1; Math.pow(5,i) <= n; i++) {
            count += n / (long)Math.pow(5,i);
        }
        return count;
    }
}
  • 分析
    代碼部分不難,重要的是數學部分的理解。

  • 舉例
    1000/5 + 1000/25 + 1000/125 + 1000/625
    = 200 + 40 + 8 + 1
    = 249(個)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章