蓝桥杯真题 求阶乘 二分 找规律 数论
⭐ 题目地址

⭐ 大佬题解
⭐ 二分:从前往后找第一个符合条件的数,那 只要 mid >= k 时,r 都要 = mid
😡 卡常数:多次用到的值 开个变量 存着,避免在条件判断里调用函数
import java.util.Scanner;
public class Main
{
static long k;
// 计算 x 的阶乘后边有多少个 0
static long calc(long x)
{
long res = 0;
while (x != 0)
{
x /= 5;
res += x;
}
return res;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
k = sc.nextLong();
// 二分查找答案
long l = 1;
long r = Long.MAX_VALUE - 1;
while (l < r)
{
long mid = l + r >> 1;
long t = calc(mid);
if (t >= k)
{
r = mid;
} else
{
l = mid + 1;
}
}
if (calc(l) != k)
{
System.out.println(-1);
} else
{
System.out.println(l);
}
}
}

浙公网安备 33010602011771号