問題描述
設計乙個演算法,計算出n階乘中尾部零的個數問題分析樣例 :11! = 39916800,因此應該返回 2
按正常的思路看,第一步:把 n! 求出。第二步:用得到的這個數取餘10的倍數,從10開始,再到100,再到 n *10……..,餘數為0,計數器加1,直到餘數不為零結束,返回計數器數值。於是有了如下**。
class
solution
long
long j = 10;
do while (!(sum % j));
return k;
}};
**的錯誤提交後發現資料只通過了一半,原因在於long long位數不夠,比如 100!,這個數太大了,long long 完全裝不下,發現問題並不簡單,而且想不出別的辦法,於是搜了一下別人做的這個題。
class
solution
return
count;
}};
**思路有5的倍數才能有0 ,看 n!中有多少5的倍數
123
45--
----
2*5乙個067
8910-
----
-10乙個011
1213
1415--
----
12*15
乙個016
1718
1920--
----
20乙個0
2122
232425-
----
-25=5*5
兩個5兩個0
2627
282930-
----
-30乙個0...
.
LintCode 2 尾部的零
設計乙個演算法,計算出n階乘中尾部零的個數 您在真實的面試中是否遇到過這個題?yes樣例11 39916800 因此應該返回 2 解題思路 要求n的階乘,就是求1到n這n個數相乘。在這1到n個數當中,只有2和5相乘的結果才會出現0,其中10的倍數也可以看做是2和5相乘的結果,所以,可以在1到n之間看...
Lintcode 2 尾部的零
問題描述 設計乙個演算法,計算出n階乘中尾部零的個數 樣例說明 樣例 1 輸入 11 輸出 2 樣例解釋 11 39916800,結尾的0有2個。樣例 2 輸入 5 輸出 1 樣例解釋 5 120,結尾的0有1個。3.思路 根據題目要求,輸入的n是乙個長整型的數。我們想要求階乘尾部零的個數,那麼這時...
LintCode 2 尾部的零
答案 描述 設計乙個演算法,計算出n階乘中尾部零的個數 您在真實的面試中是否遇到過這個題?樣例 11 39916800,因此應該返回 2 挑戰 o logn 的時間複雜度 小結 從最終的 來看,問題是挺簡單的。之所以折騰這麼久都沒有切入要害,直接做到真正的時間複雜度為o logn 的效果,個人覺得是...