原題**:
設計乙個演算法,計算出n階乘中尾部零的個數
您在真實的面試中是否遇到過這個題?
yes樣例11! = 39916800,因此應該返回 2
挑戰
o(logn)的時間複雜度
標籤
數學思路:
假如你把1 × 2 ×3× 4 ×……×n中每乙個因數分解質因數,結果就像:
1 × 2 × 3 × (2 × 2) × 5 × (2 × 3) × 7 × (2 × 2 ×2) ×……
10進製數結尾的每乙個0都表示有乙個因數10存在——任何進製都一樣,對於乙個m進製的數,讓結尾多乙個0就等價於乘以m。
10可以分解為2 × 5——因此只有質數2和5相乘能產生0,別的任何兩個質數相乘都不能產生0,而且2,5相乘只產生乙個0。
所以,分解後的整個因數式中有多少對(2, 5),結果中就有多少個0,而分解的結果中,2的個數顯然是多於5的,因此,有多少個5,就有多少個(2, 5)對。
所以,討論1000的階乘結尾有幾個0的問題,就被轉換成了1到1000所有這些數的質因數分解式有多少個5的問題。
參考:1
2
1class
solution
15return
count5;16}
17 };
乙個更直觀但非常耗時的方法:
1long
long trailingzeros2(long
longn)2
12}13return
count5;
14 }
其他參考:
2 尾部的零
問題描述 設計乙個演算法,計算出n階乘中尾部零的個數 樣例11 39916800 因此應該返回 2.這個問題相信很多老鐵都已經遇到過了,很經典的乙個題目,還是那句老話,重要的是考慮的過程,是如何想到以5的個數來統計0的個數呢?又是如何想到除以25 除以125.的呢?這些事重點。首先n 中,哪些數字相...
2 尾部的零
問題描述 設計乙個演算法,計算出n階乘中尾部零的個數。樣例 11 3991680011 39916800 因此應該返回 2。解答 js實現 const trailingzeros function n return sum 分析 思考乙個數尾部的零是怎麼得來的,乘以10對吧,所以n的階乘尾部有多少零...
2 尾部的零
描述 設計乙個演算法,計算出n階乘中尾部零的個數。樣例 11 39916800,因此應該返回 2 挑戰 o logn 的時間複雜度 分析 假如你把1 2 4 n中每乙個因數分解質因數,結果就像 1 2 3 2 2 5 2 3 7 2 2 2 10進製數結尾的每乙個0都表示有乙個因數10存在 任何進製...