type
status
date
slug
summary
tags
category
icon
password
创建时间
Dec 5, 2024 01:40 AM
给定一个整数
n
,返回 n!
结果中尾随零的数量。提示
n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1
数学方法
我们将问题转换为求 n! 中质因子 2 的个数和质因子 5 的个数的较小值。
优化
质因子 5 的个数不会大于质因子 2 的个数,我们可以仅考虑质因子 5 的个数。
再次优化——秒哇~~~
有 n 个数相乘:
5 的因子一定是每隔 5 个数出现一次:
n! = 1 * 2 * 3 * 4 * (1 * 5) * ... * (2 * 5) * ... * (3 * 5) *... * n
每隔 25 个数字,出现的是两个 5,所以每隔 25 个数,还需要多算一个 5。
... * (1 * 5) * ... * (1 * 5 * 5) * ... * (2 * 5 * 5) * ... * (3 * 5 * 5) * ... * n
以此类推,也就是
ans = n / 5 + n/ 25 + n / 125 + n / 625 + ...