172. 階乘后的零(Python)

題目

難度:★★☆☆☆
類型:數(shù)學

給定一個整數(shù) n,返回 n! 結(jié)果尾數(shù)中零的數(shù)量。

示例

示例 1:

輸入: 3
輸出: 0
解釋: 3! = 6, 尾數(shù)中沒有零。

示例 2:

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

解答

我們先來看一下從1到26計算階乘后的結(jié)果:

1!= 1                                      0的個數(shù)為: 0
2!= 2                                      0的個數(shù)為: 0
3!= 6                                      0的個數(shù)為: 0
4!= 24                                     0的個數(shù)為: 0
5!= 120                                    0的個數(shù)為: 1
6!= 720                                    0的個數(shù)為: 1
7!= 5040                                   0的個數(shù)為: 1
8!= 40320                                  0的個數(shù)為: 1
9!= 362880                                 0的個數(shù)為: 1
10!= 3628800                                0的個數(shù)為: 2
11!= 39916800                               0的個數(shù)為: 2
12!= 479001600                              0的個數(shù)為: 2
13!= 6227020800                             0的個數(shù)為: 2
14!= 87178291200                            0的個數(shù)為: 2
15!= 1307674368000                          0的個數(shù)為: 3
16!= 20922789888000                         0的個數(shù)為: 3
17!= 355687428096000                        0的個數(shù)為: 3
18!= 6402373705728000                       0的個數(shù)為: 3
19!= 121645100408832000                     0的個數(shù)為: 3
20!= 2432902008176640000                    0的個數(shù)為: 4
21!= 51090942171709440000                   0的個數(shù)為: 4
22!= 1124000727777607680000                 0的個數(shù)為: 4
23!= 25852016738884976640000                0的個數(shù)為: 4
24!= 620448401733239439360000               0的個數(shù)為: 4
25!= 15511210043330985984000000             0的個數(shù)為: 6
26!= 403291461126605635584000000            0的個數(shù)為: 6
27!= 10888869450418352160768000000          0的個數(shù)為: 6
28!= 304888344611713860501504000000         0的個數(shù)為: 6
29!= 8841761993739701954543616000000        0的個數(shù)為: 6
30!= 265252859812191058636308480000000      0的個數(shù)為: 7

很容易觀察到這樣的現(xiàn)象:

  1. 從4到5,從9到10,從14到15……階乘中末尾零的個數(shù)增加,說明5對于階乘結(jié)果的影響起決定性作用,每乘以一個含有因子5的數(shù),零的個數(shù)增加一;

  2. 從24到25,階乘中末尾零的個數(shù)增加2個,而這一步相當于在24!的基礎(chǔ)上乘了25,而25恰好是兩個5相乘,實際上可以與兩個偶數(shù)配對,偶數(shù)的個數(shù)是要遠遠多于5的倍數(shù)的。

為此,我們可以得出結(jié)論:將參與乘法運算的所有數(shù)進行因式分解,所有因子中5的個數(shù)少于2的個數(shù),階乘結(jié)果末尾零的個數(shù)實際上等于因子中5的個數(shù)。

我們可以通過以下方式求取因子中5的個數(shù):

class Solution:
    def trailingZeroes(self, n):
        count = 0
        while n > 0:
            count += n // 5
            n /= 5
        return count

寫成遞歸形式是這樣:

class Solution:
    def trailingZeroes(self, n):
        if n < 5:
            return 0
        return n // 5 + self.trailingZeroes(n // 5)

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • V信:15528063289
    豬_a54c閱讀 234評論 0 0
  • 長相思 風兒吹落了花紅吹散了夢, 卻吹不走相思成空。 雨兒潤濕了秀發(fā)潤濕了泥, 卻潤不了心字成灰...
    冰雪語閱讀 278評論 0 0
  • (1,定位)陰陽,是世界上最早的唯物辯證法。(2,來源)陰陽,是古代人對世界的客觀認識。人們看到,事物都是一對一對...
    學而不厭在路上閱讀 873評論 2 1
  • 作者:毛志杰(家長課堂) 對于孩子的家庭教育方面,“成績教育”重要還是“品德教育”重要呢?這的確是個問題。 “郭靖...
    毛哥說教育閱讀 1,650評論 2 1
  • 《集裝箱改變世界》 創(chuàng)新改變世界,博弈卻有可能阻礙創(chuàng)新。不過,世界還是被改變了不是嗎? 博弈是什么? 博弈本意是:...
    repo_Bell閱讀 322評論 0 0

友情鏈接更多精彩內(nèi)容