2 尾部的零

2022-05-12 02:52:29 字數 894 閱讀 2694

原題**: 

設計乙個演算法,計算出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 

1

class

solution

15return

count5;16}

17 };

乙個更直觀但非常耗時的方法:

1

long

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存在 任何進製...