🌕🌕🌗 172. 阶乘后的零
2022年10月10日
- algorithm
🌕🌕🌗 172. 阶乘后的零
难度: 🌕🌕🌗
问题描述
解法
class Solution {
public int trailingZeroes(int n) {
// 思路:
// 只有 2 * 5 这种情况下,才会产生一个 0
// 因此,就是求,{1, 2, 3, ..., n - 1, n - 2} 中含有多少个 2 & 5
// 由于 2 出现的次数肯定比 5 多,因此,就是,考虑这个集合元素中,一共有多少个 5
// 只有 5 的倍数才能产生 5,而且 5 的倍数的倍数 才能产生 2 个 5,以此类推
if(n < 5) {
return 0;
}
int res = 0;
int cur = n;
while(cur != 0) {
int count = cur / 5; // 本轮有多少个数能够被 5 的某个次方整除
res += count;
cur /= 5; // 相当于原来判断有多少个能被 5 整除的,现在变为有多少个能被 25 整除,这样累加,直到为 0
}
return res;
}
}