题目描述: 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
注意: 你的解决方案应为对数时间复杂度。
解题思路:
列出所有5的倍数发现了规律,所有5的倍数会添加一个0,所有5^2的倍数会比5的倍数多添加一个0,.......,所以得出了代码。
代码:
class Solution {
public:
int trailingZeroes(int n) {
// n = 10;
int ans = 0;
while(n) {
n /= 5;
ans += n;
}
return ans;
}
};
一开始的暴力t了:
class Solution {
public:
int trailingZeroes(int n) {
int ans = 0;
for(int i = 1 ; i <= n ; i ++) {
int n =0;
int m =i;
while( m%5 == 0) {
m /= 5;
n++;
}
ans += n;
}
return ans;
}
};