题目大意
给定一个正整数 mmm,请你统计一共有多少个正整数 nnn 满足,nnn 的阶乘的末尾连续 000 的数量恰好为 mmm。
输出满足条件的 nnn 的数量以及所有满足条件的 nnn。
题意分析
要求的是正整数 nnn 的阶乘连续末尾的 000 个数,实则为计算阶乘中的数字拆分之后能凑出多少乘 101010。
解题思路
注意到 10=5∗210=5*210=5∗2,所以我们只需要对每个数字进行分解,计算出每个数字包含的 2,52,52,5 的个数。
2,52, 52,5 中个数少的数就是当前个数后缀 000 的个数。
由于是阶乘,n!n!n! 中 222 的个数等于 n−1!n-1!n−1! 中 222 的个数加上 n−1n-1n−1 分解出来的 222 的个数。555 的个数同理。
时间复杂度解析
本题时间复杂度为 O(k⋅logk)O(k \cdot logk)O(k⋅logk),kkk 为程序找到的最大 iii 的值。
代码演示