Factorial Trailing Zeroes 階乘後的零
給定一個整數 n,返回 n! 結果尾數中零的數量。
示例 1:
輸入: 3 輸出: 0 解釋: 3! = 6, 尾數中沒有零。
示例 2:
輸入: 5 輸出: 1 解釋: 5! = 120, 尾數中有 1 個零.
說明: 你演算法的時間複雜度應為 O(log n) 。
思路:
基本idea:
1:尾0來自於10
2:10來自於2*5
3:我們需要計算所有以5和2為乘積因子的值,比如:4*5=20,5*6=30
4:所以我們需要計算以5為因子的數,因為有足夠多的其他數和5配對形成10(因為5這個因子只有每5個數才會出現,而2的倍數只要是偶數就滿足,比如對於n=46,滿足是5的倍數的只有:5,10,15,20,25,30,35,40,45,而滿足2的倍數的是所有偶數(除了0),數目遠大於5的倍數)
例子一:
有多少5的乘積因子在1~23之間,有5,10,15和20,所以有4個5的乘積因子,這些乘積因子和2的倍數配對,形成4個10,所以23有4個尾導零
例子二:
在1~100間有多少個5的乘積因子?因為100/5=20,所以由20個5,但是注意:對於25而言,25=5*5,相當於25這個數貢獻了2個5,所以我們還需要計算有多少個25,100/25=4,所以一共有:20+4=24個尾導零
例子三:
對於4617有多少個尾導零?
同理,有4617/5=923.4,有923個因子5
有4617/(5^2)=184.68,有184個因子5^2
有4617/(5^3)=36.9,有36個因子5^3
有4617/(5^4)=7.38,有7個因子5^4
有4617/(5^5)=1.47,有1個因子5^5
有4617/(5^6)=0.29,有0個因子5^6 迴圈結束
所以一共有:923+184+36+7+1=1151個尾導零
參考程式碼:
class Solution {
public:
int trailingZeroes(int n) {
int result = 0;
for (long long int i = 5; n / i > 0; i *= 5) {
result += n / i;
}
return result;
}
};
相關文章
- 力扣172.階乘後的零力扣
- 【刷演算法】LeetCode- 階乘後的零演算法LeetCode
- LeetCode每日一題: 階乘後的零(No.172)LeetCode每日一題
- error unexpected trailing commaErrorAI
- 階乘大全
- [Algorithm] 2. Trailing ZerosGoAIROS
- 計算階乘
- 求任意數字的階乘
- LeetCode—283—Move ZeroesLeetCode
- Set-matrix-zeroes
- 474. Ones and Zeroes
- python如何計算數的階乘Python
- 高精度之階乘和
- 階乘質因數分解
- 0的階乘為什麼是1
- 遞迴的列印和階乘運用遞迴
- 用遞迴方法求10的階乘遞迴
- Leetcode 73. Set Matrix ZeroesLeetCode
- c語言實現階乘C語言
- 定義一個求n的階乘的函式函式
- rust-quiz:029-tuple-trailing-commas.rsRustUIAI
- c#遞迴實現 階乘C#遞迴
- 語言演算法之:階乘演算法
- Lintcode539 Move Zeroes solution 題解
- 藍橋杯刷題-乘積尾零
- leetcode學習筆記73 Set Matrix ZeroesLeetCode筆記
- 乘聯會:2019年1月乘用車零售銷量排名快報
- 判斷一個數為哪些數的階乘之和(貪心)
- Java程式設計:利用while語句計算10的階乘Java程式設計While
- 階乘很簡單?說實話,這幾道階乘相關面試題你還真不一定懂!面試題
- 乘聯會:中國2020年3月乘用車日均零售同比下降36%
- 乘聯會:2021年12月狹義乘用車零售預計205.0萬輛
- 乘聯會:2022年1月狹義乘用車零售預計205萬輛
- 乘聯會:2022年4月狹義乘用車零售預計110.0萬輛
- 乘聯會:2022年3月狹義乘用車零售預計158.0萬輛
- 乘聯會:2021年9月狹義乘用車零售預計158.0萬輛
- 乘聯會:2022年乘用車市場零售2070萬輛 同比增長1.8%
- 乘聯會:2022年6月狹義乘用車零售預計183.0萬輛