算法-阶乘函数后K个零

题目

f(x)x! 末尾是 0 的数量。回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1

  • 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 ;而 f(11) = 2 ,因为 11!= 39916800 末端有 2 个 0 。

给定 k,找出返回能满足 f(x) = k 的非负整数 x 的数量。

示例 1:

复制代码
输入:k = 0
输出:5
解释:0!, 1!, 2!, 3!, 和 4! 均符合 k = 0 的条件。

题解

题解需要的相关结论

1、要想产生0,就需要有2和5,2*5就会得到0,像10,100等都可以拆成多个2和5相乘

2、阶乘中2的数量远远多于5的数量,以10以内的数字为例,2,4,6,8都有2,5却只有一个

3、想要有K个0,可以在5*K的范围内查找即可,因为5*k表示的数的阶乘,5的数量>=k

4、如果一个数n包含的5的数量正好是K个,那么n+1,n+2,n+3,n+4,这4个数包含的5的数量也是K个。加上n这个数就是5个数,小于n的数,不够k个5,大于等于n+5的数,5的数量大于k个

题解思路:二分查找

java 复制代码
class Solution {
    public int preimageSizeFZF(int k) {
        long start = 0L, end = 5L * k, mid;
        while(end >= start) {
            mid = start + (end - start) / 2;
            long n = 5L, nums = 0L;
            //循环计算包含5的个数,25包含两个5,125包含3个5,一此类推
            while (n <= mid) {
                nums += mid / n;
                n *= 5;
            }
            if (nums == k) return 5;
            if (nums < k) start = mid + 1;
            else end = mid - 1;
        }
        return 0;
    }
}
相关推荐
地平线开发者3 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
学习星球7 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
alphaTao12 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11213 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余1 天前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘1 天前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天1 天前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源1 天前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang