🌕🌕🌗 172. 阶乘后的零

吞佛童子2022年10月10日
  • algorithm
  • Number
小于 1 分钟

🌕🌕🌗 172. 阶乘后的零

难度: 🌕🌕🌗

问题描述

img_17.png


解法

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;
    }
}

输出

img_16.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou