給定乙個整數n,返回n!尾部0的個數
example 1:乙個更聰明的解法是:考慮n!的質數因子。字尾0總是由質因子2和質因子5相乘得來的。如果我們可以計數2和5的個數,問題就解決了。考慮下面的例子:input:3output:0explanation:3! = 6, no trailing zero.example 2:input:5output:1explanation:5! = 120, one trailing zero.
n = 5: 5!的質因子中 (2 * 2 * 2 * 3 * 5)包含乙個5和三個2。因而字尾0的個數是1。
n = 11: 11!的質因子中(2^8 * 3^4 * 5^2 * 7)包含兩個5和三個2。於是字尾0的個數就是2。
我們很容易觀察到質因子中2的個數總是大於等於5的個數。因此只要計數5的個數就可以了。那麼怎樣計算n!的質因子中所有5的個數呢?乙個簡單的方法是計算floor(n/5)。例如,7!有乙個5,10!有兩個5。除此之外,還有一件事情要考慮。諸如25,125之類的數字有不止乙個5。例如,如果我們考慮28!,我們得到乙個額外的5,並且0的總數變成了6。處理這個問題也很簡單,首先對n÷5,移除所有的單個5,然後÷25,移除額外的5,以此類推。
def trailingzeroes(self, n):
""":type n: int
:rtype: int
"""zerocount = 0
num = 5
while n >= num:
zerocount += n//num
num *= 5
return zerocount
def trailingzeroes(self, n):
""":type n: int
:rtype: int
"""zerocount = 0
sum = 1
for i in range(n):
sum = sum*(i+1)
while sum%10 == 0:
zerocount += 1
sum = sum//10
return zerocount
演算法題來自: 階乘後的零
示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零。說明 你演算法的時間複雜度應為 o log n 2.1 思路分析 當1個數乘以10的時候,它的末尾會多乙個零,而10只可分解為2 5,因此要確定乙個整數的末尾有多少零,需要知...
階乘後的零
給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 1.求尾數0的個數,即10,10只能由2 5組成,所以求因子中 2 和 5的個...
LeetCode 階乘後的零
一.題目描述 給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 二.解法 老實說,這道題,博主並沒有做出來,是抄的部落格大神的答...