給定一個整型n,返回n!後面的零的個數。
注意:你的解決方案應該在log時間復雜度內。
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
起初我看題目的時候沒太注意,還以為就是求n這個數後面的零而已,雖然心想不會這麼簡單吧……就寫了一份代碼提交了,結果WA提示我5的話應該返回1,這我就納悶了,5後面毛的0吶……趕緊看題目……哦原來是階乘,那這個題我遇到過的。
要想最後有零,階乘的過程中就必須有5,如果是10的話就有兩個可以被5整除的數了,10和5,以此類推……
剛才特意去找了一下之前寫的那篇博客,大家可以去看看,蠻有意思的,用函數式語言LISP可以求出20000的階乘喔,^_^
100的階層真的算不出來嗎?
class Solution {
public:
int trailingZeroes(int n) {
int count = 0;
while (n > 1)
count += (n /= 5);
return count;
}
};