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,以此類推 ...