Factorial Trailing Zeroes
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
I used sort of force attempt. TLE… Linear complexity doesn’t fit the requirement. Needs improving.
class Solution {
public:
int trailingZeroes(int n) {
if(n < 5) return 0;
int count = 0;
long re = 1;
for(int i = 1; i <= n; i++){
int ii = i;
while(ii % 10 == 0){
ii = ii / 10;
count++;
}
re = re * ii;
while(re % 10 == 0){
re = re / 10;
count++;
}
}
return count;
}
};
In fact, calculating the trailing numbers of a factorial by multiplying sequential numbers is quite clumsy.
10 is a multiplication of 2 and 5. So… we can do some improvements.