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

给定一个整数 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;
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理