美文网首页
172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

作者: YellowLayne | 来源:发表于2017-06-23 11:28 被阅读0次

    1.描述

    Given an integer n, return the number of trailing zeroes in n!.

    Note: Your solution should be in logarithmic time complexity.

    2.分析

    求n!后面有多少个0,实际上是求1、2、3、……、n公约数中有多少对2和5。
    由于2的个数明显大于5的个数,从而可以转化为求1到n的公约数中有多少个5。
    注意:5的x次方可能超过int的最大值,因此需要使用long long类型。

    3.代码

    int trailingZeroes(int n) {
        if (n < 5) return 0;
        unsigned int zeroes = 0;
        long long fives = 5;
        while (n / fives >=1) {
            zeroes += n / fives;
            fives *= 5;
        }
        return zeroes;
    }
    

    相关文章

      网友评论

          本文标题:172. Factorial Trailing Zeroes

          本文链接:https://www.haomeiwen.com/subject/ncqccxtx.html