CF920 G. List Of Integers

t 组询问,求第 k 个大于 x 且与 P 互质的数。

看到第 k 大这个东西,首先想到二分答案。

令当前的二分中点为 m,那么如果 [x+1,m] 中与 p 互质的数大于等于 k 个,往下缩小二分范围。否则往上缩小二分范围。

同时,求 [x+1,m] 中与 p 互质的数的数量可以前缀和转化为 [1,m] 中与 p 互质的数的数量减去 [1,x] 中与 p 互质的数的数量。那么现在问题就变成了:

[1,x] 中有多少数与 p 互质。

这个东西没法直接求。考虑容斥。

p 质因数分解。那么一个整数 qp 不互质当且仅当将 q 质因数分解后,存在与 p 相同的质因子。那么,我们可以 dfs 枚举 p 的每一个质因子是否是 q 的质因子。若令选择的所有质因子的乘积为 t,那么 xt 即为满足这个条件的 q 的数量。

然后做容斥。如果总共选择了偶数个质因子,将答案加上 xt。反之减去 xt

代码

posted @   2huk  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示