关于java:leetcode-每日一题-2022325-172-阶乘后的零

28次阅读

共计 364 个字符,预计需要花费 1 分钟才能阅读完成。

给定一个整数 n,返回 n! 后果中尾随零的数量。

提醒 n! = n (n – 1) (n – 2) 3 2 1

// 首先,一个数只有因子含有 10 才会有尾随 0
// 其次,10 能够由 2 和 5 两个质数相乘失去
// 之后,因为任何一个整数的阶乘蕴含因子 2 的个数都大于因子 5 的个数
// 所以,最终只须要统计 n! 含有多少个因子 5
// 拿 1000!举例,1~1000, 其中含有 1000/5,即 200 个 5 的倍数
// 若这 200 个数都含有 1 个因子 5,那间接返回 200 就好
// 然而含有因子 5 的个数有不止一个的
// 所以须要计算含有 2 个的,也就是能被 25 整除的
// 以此类推再计算含有 3 个的,直到被除数大于 n 完结

public int trailingZeroes(int n) {
        int res = 0, tmp = 5;
        while (tmp <= n) {
            res += n / tmp;
            tmp *= 5;
        }
        return res;
    }

正文完
 0