光速幂技巧

有一个问题,即求:

abmodp

底数 a 和模数 p 均固定。

朴素做法是快速幂,时间复杂度 O(logp)

b 的值域为 0v,则存在一种 O(v) 预处理,O(1) 查询的算法,我们一般称其为光速幂

如何做,考虑阈值分治,设置阈值 ω

预处理出 a0,a1,a2,...,aω1 以及 a0,aω,a2ω,...,avωω

回答询问 abmodp 时直接输出 abmodω×abωω 皆可,很显然复杂度 O(1)

预处理复杂度 O(ω+vω),显然 ωv 时最优,此时预处理复杂度为 O(v)

从而我们做到了 O(v) 预处理,O(1) 查询。

不过由于其要求底数和模数固定,所以比较局限。

posted @   lstqwq  阅读(361)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
主题色彩