首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Q172 Factorial Trailing Zeroes

Q172 Factorial Trailing Zeroes

作者头像
echobingo
发布2018-04-25 16:55:41
6180
发布2018-04-25 16:55:41
举报

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

Note: Your solution should be in logarithmic time complexity.

解题思路:

此题寻找 n! 尾部0的个数。

先观察规律:

5!  有 1 个 0;   10! 有 2 个 0;
15! 有 3 个 0;   20! 有 4 个 0;  
25! 有 6 个 0;   30! 有 7 个 0......

由此可以观察到,逢 5 的倍数的数,其阶乘多产生 1 个 0。对于 25! ,先用 25 // 5 = 5,会产生 5 个 0;由于商仍然为 5 的倍数, 用 5 // 5 =1,又会产生一个0,因此是6个0。

当 n < 5 时,f(n) = 0; 当 n >= 5 时, f(n) = f(n//5) + n//5

因此,可以用递归的方法,求出末尾 0 的个数。时间复杂度为 O(logn),底数为5。

Python实现:
class Solution(object):
    def trailingZeroes(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n < 5:
            return 0
        return self.trailingZeroes(n//5) + n//5

a = 25
b = Solution()
print(b.trailingZeroes(a))  # 6
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解题思路:
  • Python实现:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档