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;
}
};
相關文章
- [CareerCup] 17.3 Factorial Trailing Zeros 求階乘末尾零的個數AIROS
- Leetcode 172. Factorial Trailing ZeroesLeetCodeAI
- leetcode刷題--Factorial Trailing ZeroesLeetCodeAI
- 每天一道LeetCode--172. Factorial Trailing ZeroesLeetCodeAI
- LeetCode每日一題: 階乘後的零(No.172)LeetCode每日一題
- 【刷演算法】LeetCode- 階乘後的零演算法LeetCode
- [CareerCup] 1.7 Set Matrix Zeroes 矩陣賦零矩陣
- 計算階乘
- ACM 階乘之和ACM
- 階乘之和取後六位以及有趣的計時函式。函式
- SQL SERVER 求階乘之和SQLServer
- 面試題:階乘問題面試題
- 階乘質因數分解
- python如何計算數的階乘Python
- 遞迴的列印和階乘運用遞迴
- javascript階乘程式碼例項JavaScript
- 【演算法拾遺】階乘演算法
- c語言實現階乘C語言
- C語言_簡單的階乘函式C語言函式
- Oracle SQL實現階乘的幾個方法OracleSQL
- 語言演算法之:階乘演算法
- ACM 另一種階乘問題ACM
- c#遞迴實現 階乘C#遞迴
- FCC - 253 計算一個整數的階乘
- 大數階乘的AS3與C++版本S3C++
- 定義一個求n的階乘的函式函式
- LeetCode—283—Move ZeroesLeetCode
- Leetcode Set Matrix ZeroesLeetCode
- 演算法Set Matrix Zeroes演算法
- C語言用遞迴方法求解階乘C語言遞迴
- js計算指定數字的階乘程式碼例項JS
- LeetCode 73 Set Matrix ZeroesLeetCode
- Leetcode-Set Matrix ZeroesLeetCode
- Set Matrix Zeroes leetcode javaLeetCodeJava
- [Algorithm] 2. Trailing ZerosGoAIROS
- 階乘很簡單?說實話,這幾道階乘相關面試題你還真不一定懂!面試題
- Java程式設計:利用while語句計算10的階乘Java程式設計While
- 第15周-專案2-有些數的階乘不算了