給定乙個整數 n,返回 n! 結果尾數中零的數量。
示例 1:
輸入: 3
輸出: 0
解釋: 3! = 6, 尾數中沒有零。
示例 2:
輸入: 5
輸出: 1
解釋: 5! = 120, 尾數中有 1 個零.
在1~9這9個數字裡面,只有5和乙個偶數才可以乘積得到0,遇到乙個%10為0的數就多乙個0,所以就可以以5來判斷這個結果,如下:
int
trailingzeroes
(int n)
int count =0;
while
(n)return count;
}
給定乙個整數 n,返回 n! 結果中倒數第乙個非零的數字。
示例 1:
輸入: 3
輸出: 6
解釋: 3! = 6。
示例 2:
輸入: 5
輸出: 2
解釋: 5! = 120。
我們可以使用暴力的方式計算這個數字。
int
lastnotzeronumber
(int n)
while
(res %
10==0)
return res %10;
}
但是這樣會存在乙個問題,就是當n的數字變大的時候,階乘後的結果是很大的,即便我們把返回結果給成long long型的,所以這時候就需要處理一下每次的結果,我們要得到的是倒數第乙個非0的數字,所以我們是不是可以把結果中末尾為0的部分去掉,這樣並不影響最後的結果,所以每次得到乙個值,判斷它是否能**%10 == 0**,如果能得話,給它除掉最後面的0,但是這樣並不能完全解決問題,當輸入的數很大的時候,0的個數佔整個數字長度的一少部分,也就是說它還會很大很大,long long還是存不下,所以這時候就應該考慮只保留它的有效部分,就是給這個結果取末尾的n位,(這個n可以為2,可以為3,但是不能小於2,因為兩個小於10的數字相乘極大可能超過兩位數,所以這個時候n取2就可以,也就是給這個結果%100),參考**如下:
int
lastnotzeronumber
(int n)
res %
=100;}
return res %10;
}
階乘後的零
示例 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 二.解法 老實說,這道題,博主並沒有做出來,是抄的部落格大神的答...