代码在计算阶乘的末尾数字时,需要考虑尾部的零对结果的影响。因此,正确的方法是计算阶乘中因数里10的个数,然后用该值除以10,获得尾数相应的值。以下是一个Python实现的示例代码:
def last_nonzero_digit(n):
if n < 0:
return -1
if n == 0:
return 1
r = 1
for i in range(1, n + 1):
while i % 5 == 0:
i //= 5
r = (r * 4) % 10
r = (r * (i % 10)) % 10
return r
在这个解决方案中,我们使用因数分解来计算10的数量。我们只关心10,所以我们只需要关注从1到n的因子中的5的数量。每当我们找到一个因数,它可以被分解成指数形式,我们就要计算出它实际上包含了多少个5。当我们计算5的指数时,我们还需要考虑序列中的乘法运算和进位,所以我们使用模数来确保我们的计算正确。这样,我们就能计算出阶乘的最后一个非零数字。