python之N階乘結果末尾有幾個0(演算法)

2022-08-15 22:09:22 字數 448 閱讀 7075

之前寫過乙個階乘末尾0個數的計算方法,是要把階乘算出來

python之n階乘結果末尾有幾個0

今兒想到若階乘最後為0,則必須有2*5,相當於把每個階乘因子分解並計算2和5的個數

現實中2的個數肯定大於5,所以只需要計算5的個數

對於乙個階乘來說,因子5的個數應該為數字n//5,若為25、125這些為5的次方的數字,則還需要加上n//25、n//125,那麼可以用推導式寫如下:

def factorial(factorialnum):

return factorialnum == 0

if factorialnum //

5 ==0 else factorialnum

//5 + factorial(factorialnum

//5)

print(factorial(

125))

n的階乘結果中末尾有多少個零?

題目 n的階乘中一共有多少個零?解答 產生零的結果只能有一種可能性那就是2 5 10,然而n的階乘本質上是可以拆解為很多2和5以及其他不包含2和5的乘數的積,例如5的階乘 1 2 3 4 5 1 2 3 2 2 5。按照這個思路,將n的階乘乘積的每一項進行拆解,看看可以拆解出多少個2和多少個5,然後...

n的階乘末尾有幾個0

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 這個問題很簡單,就是問你n的階乘末尾有幾個0?輸入第一行乙個整數t 1 t 100 代表測試組數 接下來t行,每行乙個數n 1 n 10 9 對於每組測試資料,輸出...

N的階乘中末尾有幾個0

原位址 n的階乘中末尾有幾個0 如果n!k 10m,且k不能被10整除,那麼n!末尾有m個0。再考慮對n!進行質因數分解,n!2 x 3 y 5 z 由於10 2 5,所以m只跟x和z相關,每一對2和5相乘可以得到乙個10,於是m min x,z 不難看出x大於等於z,因為能被2整除的數出現的頻率比...