LintCode 002 尾部的零

2021-08-09 23:29:50 字數 640 閱讀 1060

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

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

n階乘中尾部的 0 是通過含因子 2 的數和含因子 5 的數相乘產生的。

在 1…n 中,因子 2 的數量一定比因子 5 的數量多。

此時問題轉化為 1…n 中一共多少個因子 5 。

在 1…n 中,含 1 個因子 5 的數有5,10, 15,20,30…;

含 2 個因子 5 的數有25,50,75,100,150…;

含 3 個因子 5 的數有125,250,375,500,750…

以 n = 128 為例描述求解過程如下:

128 / 5 得到 25,說明 1…n 中,5 的倍數一共有 25 個,

128 / 25 得到 5,說明 1…n 中,25 的倍數一共有 5 個,

128 / 125 得到 1,說明 1…n 中,125 的倍數一共有 1 個,

將以上三個得數相加,即為 1…n 中因子 5 的總數

// time:  o(logn) = o(1)

// space: o(1)

class solution

return zerocount;

}};

LintCode 2 尾部的零

問題描述設計乙個演算法,計算出n階乘中尾部零的個數 樣例 11 39916800,因此應該返回 2 問題分析按正常的思路看,第一步 把 n 求出。第二步 用得到的這個數取餘10的倍數,從10開始,再到100,再到 n 10 餘數為0,計數器加1,直到餘數不為零結束,返回計數器數值。於是有了如下 cl...

LintCode 2 尾部的零

設計乙個演算法,計算出n階乘中尾部零的個數 您在真實的面試中是否遇到過這個題?yes樣例11 39916800 因此應該返回 2 解題思路 要求n的階乘,就是求1到n這n個數相乘。在這1到n個數當中,只有2和5相乘的結果才會出現0,其中10的倍數也可以看做是2和5相乘的結果,所以,可以在1到n之間看...

Lintcode 2 尾部的零

問題描述 設計乙個演算法,計算出n階乘中尾部零的個數 樣例說明 樣例 1 輸入 11 輸出 2 樣例解釋 11 39916800,結尾的0有2個。樣例 2 輸入 5 輸出 1 樣例解釋 5 120,結尾的0有1個。3.思路 根據題目要求,輸入的n是乙個長整型的數。我們想要求階乘尾部零的個數,那麼這時...