Leetcode 總結 172 階乘後的零

2021-08-29 09:32:58 字數 1151 閱讀 9281

q:

給定乙個整數 n,返回 n! 結果尾數中零的數量。

示例 1:

輸入:3輸出:0解釋:3! = 6, 尾數中沒有零。
示例 2:

輸入:5輸出:1解釋:5! = 120, 尾數中有 1 個零.
說明:你演算法的時間複雜度應為 o(log n)。

首先,時間複雜度應為 

o(log n)

,就說明會有比較大的數字出現,先暴力求解試一下,方法如下,遞迴計算乙個階乘,然後從後面開始數0 返回答案,顯而易見

class solution:

def trailingzeroes(self, n):

""":type n: int

:rtype: int

"""strs = str(self.f(n))

print(strs)

right = len(strs)-1

count = 0

if strs[right] == "0":

while (right > 0):

if strs[right] == "0":

count += 1

right -= 1

else:

return count

else:

return 0

def f(self,n):

if n == 0:

return 1

else:

return n*self.f(n-1)

class solution:

def trailingzeroes(self, n):

""":type n: int

:rtype: int

"""res = 0

while (n > 0):

res += n // 5

n //= 5

return res

還是找規律吧~

階乘後的零 LeetCode 172

10進製數結尾的每乙個0都表示有乙個因數10存在,任何進製都一樣,對於乙個m進製的數,讓結尾多乙個0就等價於乘以m。10可以分解為2 5 因此只有質數2和5相乘能產生0,別的任何兩個質數相乘都不能產生0,而且2,5相乘只產生乙個0。所以,分解後的整個因數式中有多少對 2,5 結果中就有多少個0,而分...

LeetCode 172 階乘後的0

乙個數n,他的階乘n 的尾數裡面有多少0.0的出現就是2和5組成的。也就是看1 n這n個數字中,各有多少個2和5的配對。考慮到2的數字肯定比5多,所以只用考慮有多少個5即可。比如31這個數字,31沒有5的組合,但是30有,25有,20有 5有。class solution def trailingz...

leetcode 172 階乘後的零

給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 此篇文章並不是講這個題,而是總結一下學習到的乙個知識點 對於乙個正整數n,求所...