階乘末尾零的個數

2021-08-14 06:20:01 字數 685 閱讀 9083

求乙個數的階乘末尾零的個數。

數學結論題。

如果你去求階乘再去求末尾零的個數,累死你,給你10000,你就得寫高精度了。

顯然暴力不是正解。

我們換個角度。

末尾的「0」是怎麼來的?

顯然,二五一十啊。

乙個二乙個五,乙個十。

進一步想,二咋來的,5咋來的?

一堆數相乘,2多了去了,每個偶數都有至少乙個2.

再看5。

顯然,只有5的倍數有五。

那25的倍數那?

2個五。

125?3個5啊。

於是,正解出來了。

先找5的倍數。

再找125的。

然後是625。..

....

好了答案出來了

n一直除以5。

除到結果是零。

複雜度?幾乎不計得好吧。。。

(題目太好寫,**省略)

(寫不出來的退役得了....)

就拿10000來模擬:

10000/5=2000

2000/5=400

400/5=80

80/5=16

16/5=3

3/5=0

好了可以了。

商加到一起

2000+400+80+16+3=2499

emmm。。。第一篇沒**的部落格、、、

階乘末尾零的個數

請設計乙個演算法,計算n的階乘有多少個尾隨零。給定乙個int n,請返回n的階乘的尾零個數。保證n為正整數。測試樣例 5返回 1 思路 對n 進行質因數分解,n 2的x次方 3的y次方 5的z次方 因為10 2 5,所以末尾零的個數只與x和z相關,每一對2和5相乘可以得到乙個10,因為x大於等於z,...

N階乘末尾0的個數

輸入乙個正整數n,求n 即階乘 末尾有多少個0?比如 n 10 n 3628800,所以答案為2 輸入為一行,n 1 n 1000 輸出乙個整數,即題目所求要判斷末尾有幾個0就是判斷可以整除幾次10。10的因子有5和2,而在0 9之間5的倍數只有乙個,2的倍數相對較多,所以本題也就轉換成了求n階乘中...

階乘末尾0的個數 2021 1 4

本題在去年寒假的競賽培訓中即出現過,不妨分析一下,n的階乘末尾零的個數即從1到n每個數字包含因子5的個數 可以用電腦上的計算器模擬一下,如,10!末尾零的個數即為2,25!即為6 現提供一種更好的思路,乙個數除以五,得到的即為它包含乙個因子5的個數。然而,乙個數字中可以包含若干個因子5,因此,再將所...