Luogu8219 solution

Problem

函数 \(f(x)\) 代表 \(x\) 的第二大约数。求 \(\max\limits_{L\le x\le R}\{f(x)\}\)

link->https://www.luogu.com.cn/problem/P8219

Solution

如果 \(x\) 是偶数的话,那么 \(f(x)\) 无疑是 \(\frac{x}{2}\)。如果 \(x\) 是奇数,那么 \(f(x)\) 最大是 \(\frac{x}{3}\),当然 \(3\) 可能无法整除 \(x\),那么这时 \(f(x)\) 便是 \(\frac{x}{\min\limits_{5\le k\le\infty}\{k\mid x\bmod k=0 \}}\) 了。

我们可以设计一个算法:

\(R\) 为偶数时直接输出 \(\frac{R}{2}\) 即可。

那么当 \(R\) 为奇数呢?由于题目要求 \(L<R\),所以 \(R-1\ge L\),也就是对于 \([L,R)\) 这个区间里的最大的 \(f(x)\)\(\frac{R-1}{2}=\frac{R}{2}-\frac{1}{2}\),而 \(f(R)\) 最大是 \(\frac{R}{3}\),而 \(\frac{R-1}{2}\ge \frac{R}{3}\),所以当 \(R\) 为奇数时,答案是 \(\frac{R-1}{2}\)

值得一提的是,当 \(R\) 为奇数时,\(\frac{R-1}{2}=\lfloor\frac{R}{2}\rfloor\),而 int 自动向下取整。

所以直接输出 \(\frac{R}{2}\) 即可。

posted @ 2022-08-01 14:24  lsj2009  阅读(23)  评论(0)    收藏  举报