LeetCode 172.阶乘后的零

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

示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。

C

在1-9之间,只有2*5=10的尾数为0。所以,第一个方向就是处理2和5的倍数。2和5一起决定了尾数0的数量,很明显一个地方,5的数量明显少于2,那么,关键就在处理5的倍数了。
5! 有一个5, 尾数0的数量为1, 10! 有两个5的倍数, 尾数0的数量为2, ... , 25!有5个5的倍数,尾数0的数量却为6
25!的0尾数有6个,这是因为25 = 5 * 5,所以,25是包含2个5的,那么加上前面4个5的倍数,总共就有6个5的倍数了。
代码是不断地对5做除法, 然后将商累加起来,作为最后的结果。

int trailingZeroes(int n){
        int cnt = 0;
        while(n != 0) {
            cnt = cnt + n / 5;
            n = n / 5;
        }
        return cnt;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容