題目
設計一個算法,計算出n階乘中尾部零的個數
樣例
11! = 39916800,因此應該返回 2
代碼
public class Solution {
/*
* @param n: An integer
* @return: An integer, denote the number of trailing zeros in n!
*/
public long trailingZeros(long n) {
// write your code here, try to do it without arithmetic operators.
long count = 0;
for(int i = 1; Math.pow(5,i) <= n; i++) {
count += n / (long)Math.pow(5,i);
}
return count;
}
}
分析
代碼部分不難,重要的是數學部分的理解。舉例
1000/5 + 1000/25 + 1000/125 + 1000/625
= 200 + 40 + 8 + 1
= 249(個)