题目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和52*5就会得到0像10100等都可以拆成多个2和5相乘2、阶乘中2的数量远远多于5的数量以10以内的数字为例2468都有25却只有一个3、想要有K个0可以在5*K的范围内查找即可因为5*k表示的数的阶乘5的数量k4、如果一个数n包含的5的数量正好是K个那么n1,n2,n3,n4,这4个数包含的5的数量也是K个。加上n这个数就是5个数小于n的数不够k个5大于等于n5的数5的数量大于k个题解思路二分查找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包含两个5125包含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; } }