• 172. Factorial Trailing Zeroes


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

    Example 1:

    Input: 3
    Output: 0
    Explanation: 3! = 6, no trailing zero.

    Example 2:

    Input: 5
    Output: 1
    Explanation: 5! = 120, one trailing zero.

    Note: Your solution should be in logarithmic time complexity.

    来自 <https://leetcode.com/problems/factorial-trailing-zeroes/description/>

     

    思路1:耿直的想法,把阶乘算出来,然后计算末尾有多少个0 

     1 class Solution(object):
     2     def trailingZeroes(self, n):
     3         """
     4         :type n: int
     5         :rtype: int
     6         """
     7         num = 1
     8         for i in range(1, n + 1):
     9             num = num * i
    10         num = str(num)[::-1]
    11         count = 0
    12         for i in num:
    13             if i == '0':
    14                 count += 1
    15             else:
    16                 break
    17         return count

    思路2:问题的关键在于2和5的出现次数,因为只有2*5才能组成10,但2的出现概率是高于5的,所以只要计算5的出现次数就行了,如5!包含1个5,10!包含5和10这两个,25!包含5,10,15,10,25,其中25又可以分成5*5也就是6个。所以问题可以转换为求解包含5,5*5,5*5*5的个数

     1 class Solution(object):
     2     def trailingZeroes(self, n):
     3         """
     4         :type n: int
     5         :rtype: int
     6         """
     7         count = 0
     8         while (n > 0):
     9             count += n // 5
    10             n = n / 5
    11         return int(count)

      

  • 相关阅读:
    字符数组与指针
    终于在博客园安家了
    关于SET NOCOUNT
    如何判断请求是否发送成功以及获取请求中的数据
    mysql进阶 withas 性能调优
    Linux mkdir
    Linux umask and chmod
    C linux Debug
    Linux sed
    Linux ulimit
  • 原文地址:https://www.cnblogs.com/Thinker-pcw/p/9513718.html
Copyright © 2020-2023  润新知