阶乘末尾0的数量
问题简述
给定一个非负整数 n ,返回 n! 结果的末尾为 0 的数量。
思路1:找规律
定义
foo(n)
计算末尾为 0 的数量,然后找规律;def foo(n): s = 1 for i in range(1, n + 1): s *= i s = str(s) r = 0 for i in range(len(s) - 1, -1, -1): if s[i] == '0': r += 1 else: break return r
思路2:数学
本题实际上求的是
1~n
在因式分解后能提供的 2 和 5 的个数,因为 2 的数量大于 5,因此只要求 5 的个数;具体来说,能被 5 整除的可以提供 1 个 5,能被 25 整除的可以提供 2 个 5, ...
Last updated