# 1. 数学题

# 1.1. 阶乘末尾0的个数

题目描述: 输入一个正整数n,求n!的末尾有多少个0?比如:n=10,n!=3628800,所以答案为2。

例如,输入:10,输出为:2

思路: 只要求出因子中包含多少个5

  1. 因为2很多,5较少,根据木桶效应,末尾出现0的次数由因子是5的个数决定。
  2. 注意:如果是50的阶乘,50 = 5 *5*2,包含2个5。
def getFactorSuffixZero(n):
  if n < 5:
    return 0
  res = 0

  for i in range(1, n+1):
    num = 0
    
    while i % 5 == 0 and i >= 5:
      num += 1
      i //= 5
    
    res += num

  return res

# 1.2. 买苹果:只能用6个每袋和8个每袋的包装,问需要几个袋子(袋子装满)

例如,输入:20,输出:3

思路: 数学题

  1. 如果num不为偶数或者等于10或者小于6都无解,剩下的数都有解,比如6 8 12 14 16 18 20
  2. 所以要求最少的袋子,就先除以8,得到count,有余数的话,count+1
def solution(num):
  if n % 2 != 0 or num == 10 or num < 6:
    return -1
  
  k = num // 8
  if num % 8 != 0:
    k += 1

  return k