Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
最后的解法就是对n/5+n/25+n/125+…+进行求和,当n小于分母的时候,停止。分母依次为5^1, 5^2, 5^2… 这样的话在计算5^2的时候,能被25整除的数里面的两个5,其中一个已经在5^1中计算过了。所以5^2直接加到count上。
public class Solution {
public int trailingZeroes(int n) {
if ( n<0 ) return -1;
int count = 0;
for (long i=5; n/i>=1; i*=5) {
count += n / i;
}
return count;
}
}