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,求所...