题目地址:
https://www.lintcode.com/problem/factorial-trailing-zeroes/description
给定一个整数 n n n,问 n ! n! n!末尾有多少个 0 0 0。
其实就是要找 1 ∼ n 1\sim n 1∼n的乘积里有多少个 5 5 5,显然 n / 5 n/5 n/5个数能提供 1 1 1个 5 5 5, n / 25 n/25 n/25个数能提供 2 2 2个 5 5 5,依次类推,所以累加起来就是答案,答案就是 n / 5 + n / 25 + . . . n/5+n/25+... n/5+n/25+...。代码如下:
public class Solution {
/**
* @param n: a integer
* @return: return a integer
*/
public int trailingZeroes(int n) {
// write your code here
int res = 0;
while (n != 0) {
res += n / 5;
n /= 5;
}
return res;
}
}
时间复杂度 O ( log n ) O(\log n) O(logn)。