LintCode 2 尾部的零

2021-08-15 00:09:06 字數 1027 閱讀 4507

問題描述

設計乙個演算法,計算出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 的效果,個人覺得是...