# 1. 数学题
# 1.1. 阶乘末尾0的个数
题目描述:
输入一个正整数n,求n!的末尾有多少个0?比如:n=10,n!=3628800
,所以答案为2。
例如,输入:10,输出为:2
思路: 只要求出因子中包含多少个5
- 因为2很多,5较少,根据木桶效应,末尾出现0的次数由因子是5的个数决定。
- 注意:如果是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
思路: 数学题
- 如果num不为偶数或者等于10或者小于6都无解,剩下的数都有解,比如
6 8 12 14 16 18 20
。 - 所以要求最少的袋子,就先除以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