def func(n):
result=1
if n==0:
result=1
else:
for i in range(1,n+1):
result = result*i
return result
n=int(input('输入一个整数:'))
print(f'{n}的阶乘为{func(n)}')
def count_zeros(n):
str_n = str(n)
return str_n.count('0')
print(count_zeros(func(n)))
除10法
def count_zero(n):
count=0
while n>1:
if n%10==0:
count+=1
n=n//10
return count
print(count_last_zero(func(n)))
2、统计数字尾随有几个零
class Solution:
def trailingZeroes(self, n: int) -> int:
zero_count = 0
current_multiple = 5
while n >= current_multiple:
zero_count += n // current_multiple # n 以内有多少个5
current_multiple *= 5
# 一个 5 的平方多一个0, 两个 5 的平方多两个0...一个5 的立方多两个0,两个5 的立方多两个0...
return zero_count
s = Solution()
print(s.trailingZeroes(101))
# 24=101//5+101//(5^2)
# 解释:101取整5等于20,101里面有20个5。但是5的平方25多一个5,50、75、100都是25的倍数,都多一个0
自己写的求尾随0的个数
def count_last_zero(n):
count=0
while n%10==0:
count+=1
n=n//10
return count
print(count_last_zero(func(n)))