在线 Θ(1) 逆元

最近看到这个题,想到了一种比较简单的做法。

首先,我们考虑给 x 乘以一非零整数 u,如果我们能求出 1xu,我们就可以通过再乘以 u 得到答案。

考虑让 uxumodp 比较接近 0,预处理 |k| 比较小的所有 1k

考虑分块:设 x=aB+c(0c<B),对于 aB 找到一个满足条件的 u。考虑令 B=p1/3u 不超过 Θ(p1/3),且 |aBu| 不超过 Θ(p2/3)

这样,xu=(aBu+cu)modp 的绝对值就是 Θ(p2/3) 级别的了。

怎么预处理 aB 中的 u 呢?我们的问题可以看成是找到一组 (u,v) 使得 vuaB(modp),使得 |v|p2/3up1/3。而根据 黄忠庆功宴 中的结论,这是一定可以找到的!

(证明大概就是对要 check 的 x=aB 做抽屉原理,{ax+b}(ap1/3,bp2/3) 中如果存在相同的一对数那我们就找到了合法解)

但是怎么样找到这样的 (u,v) 呢?我们枚举 u,找到所有的 k 使得 |ukB|p2/3。由于 uB 不是很大,所以我们每次跳找下一个合法 k 即可。

稍加卡常的 aclink

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