我正在尝试计算阶乘中的尾随零数。
def count(x):
zeros = 0
for i in range (2,x+1):
print(i)
if x > 0:
if i % 5 == 0:
print("count")
zeros +=1
else:
("False")
print(zeros)
count(30)
我认为尾随零的数量不正确。
使用count(30)
时,30中有7个尾随0
。但它返回6。
答案 0 :(得分:4)
def count (x):
i = 5
zeros = 0
while x >= i:
zeros += x // i
i *= 5
return zeros
print(count(30))
答案 1 :(得分:3)
维基百科在这一特定主题上有一个short article,它表示这可以通过计算因数为5的直接求和来计算。
def trailing_zeros_of_factorial(n):
assert n >= 0, n
zeros = 0
q = n
while q:
q //= 5
zeros += q
return zeros
# 32! = 263130836933693530167218012160000000
print(trailing_zeros_of_factorial(32)) # => 7
答案 2 :(得分:1)
我们将首先计算1和n之间的5的倍数(即X),然后计算25的倍数(〜s),然后是125,依此类推。 要计算n中母马的倍数,我们可以将n除以m
def countFactZeros(num):
count = 0
i = 5
if num < 0:
return False
while num//i > 0:
count = count + num//i
i = i * 5
return count
countFactZeros(10) # output should be 2
countFactZeros(100) # output should be 24
答案 3 :(得分:0)
您的算法存在问题:
Select h.holderidentitykey, e.*
From @holder As h
Join Employees As e
On h.FirstName = e.FirstName
Or h.lastname = e.LastName
Where iif(h.firstname = e.firstname, 1, 0) +
iif(h.lastname = e.LastName, 1, 0) +
iif((h.city = e.City AND h.stateabbr = e.Region) OR h.zip = e.PostalCode, 1, 0) +
iif(h.homephone = e.HomePhone, 1, 0) +
iif(h.extension = e.Extension, 1, 0) >= 4;