力扣中國172階乘後的零

2022-03-17 07:27:50 字數 653 閱讀 2176

class solution:

# 超時 首先是用的暴力的方法算的,直接算出階乘,然後求出有幾個零

# 但是提交的時候直接顯示超時。

def trailingzeroes(self, n: int) -> int:

sum_0,sum_num = 0,1

for index in range(1,n + 1):

sum_num *= index

while sum_num % 10 == 0:

sum_0 += 1

sum_num = sum_num // 10

return sum_0

# 然後看了大神的方法,明白了結尾有乙個零階乘衝肯定有乙個 5 ,因此

# 就相當於階乘裡邊有幾個5,最後的結果末尾就有幾個零

# 但是當n = 25 的時候,階乘裡邊有6個5,而不是由5個,因為25 = 5 * 5

def trailingzeroes(self, n: int) -> int:

# 定義乙個sum變數

sum = 0

# 注意這裡,當n為5的幾次方時,都可以多拆出來乙個5

while n > 0:

n = n // 5

sum += n

return sum

階乘後的零(力扣第172題)

題目 給定乙個整數 n,返回 n 結果尾數中零的數量。分析 求尾數為0的個數,那就要分析如何才能使得尾數會有0,其實就是在求階乘運算的過程中存在10這個因子,繼續分解,實質就是存在2和5這兩個因子,有多少個2 5,則結尾就會有多少個0,而2 5個的個數,其實受限於5的個數,因為2是乙個較小的值,且是...

172 階乘後的零

具體對於5 5 4 3 2 1 120,結果有乙個0,原因是存在一對2 5 10,對於10來說,只有2 5可以構成,所以需要在階乘中查詢有多少對2 5。在看乙個例子 11 11 10 9 8 7 6 5 4 3 2 1 11 2 5 9 4 2 7 3 2 1 5 2 2 3 1 2 1 對於含有2...

172 階乘後的零

難度 簡單 題目描述 解題思路 產生0只可能是2 5,而且2的數量肯定比5多,所以只要找出所有乘數裡5因子的數量,就一定能找打同樣多的2和5配對形成0.所以問題可以簡化為找出5因子的數量。可以產生5的數字有 5,10,15,20,25等 要注意的是每個25都會產生兩個5,125產生3個5,以此類推 ...