N階乘末尾0的個數

2021-08-21 18:42:06 字數 636 閱讀 8766

輸入乙個正整數n,求n!(即階乘)末尾有多少個0? 比如: n = 10; n! = 3628800,所以答案為2

輸入為一行,n(1 ≤ n ≤ 1000)
輸出乙個整數,即題目所求
要判斷末尾有幾個0就是判斷可以整除幾次10。10的因子有5和2,而在0~9之間5的倍數只有乙個,2的倍數相對較多,所以本題也就轉換成了求n階乘中有幾個5的倍數。比如10的階乘,10之內有2個5的倍數,10/5=2,2之內則沒有了可以匹配的5了,所以一共2個5。

還有25階乘中貢獻了6(25/5+5/5)個5,因為有5的倍數的倍數(25=5*5,貢獻2個5),所以就有了count += n/5,在先求一批5的個數後,再求第二批5的個數。

同理 125中 5的個數等於125/5 + 25/5 +5/5=31;

**如下:

n的階乘末尾含0的個數

本博主曾被問過這樣乙個問題 求n的階乘中末尾含有多少個0。例如n 10,n 3628800,那麼n 末尾有兩個0。直接計算n 的值顯然不合適,因為n 數值太大,很容易溢位。而且這種無腦的計算方式,顯然不適合面試的時候裝nbility拿高薪offer。本博主當時被問這個問題的時候的第一反應就是 要相乘...

n的階乘問題 階乘位數 階乘末尾0的個數

初來乍到,望高手指教!原有解決n的階乘的方式 迭代,如果是大資料的話,迭代會吃掉大量記憶體,導致記憶體溢位 用平時的迭代解決n的階乘問題 在計算21的階乘時,結果已然為負數,超出整型資料表示範圍。計算34的階乘是,結果已然為0 此段 將n的階乘問題解決,實現無限大數的階乘!無限 兩字有點牽強,數字太...

演算法 階乘 n 求 末尾 0 的個數

最近在網上看到乙個這樣的演算法.就寫了出來.n 末尾有多少個 0 取決於從 1 到 n 的各個數的因子中 2 和 5 的個數。又因為 2 的個數遠遠多於 5 的個數,所以只要求出這當中 5 的個數即可。不斷地用 n 除以 5,直到結果為 0,將中間的結果都加起來,即可得到因子 5 的個數。例如,10...