正常求逆元
由费马小定理
ap≡a(modp)p∈prime
得:
ap−2≡1a(modp)
之后称 a 关于模 p 的乘法逆元为 inv(a)
求 inv(a) 的时间复杂度为 O(logp) (快速幂)
线性求 inv(i) (1⩽i⩽n)
即要 O(1) 在已知 inv(j) (1⩽j⩽i−1) 的前提下求 inv(i)
推导:
将 p 拆开
p=⌊pi⌋×i+p%i
得
⌊pi⌋×i+p%i≡0(modp)
两边同乘 inv(i)×inv(p%i),得
⌊pi⌋×inv(p%i)+inv(i)≡0(modp)
即
inv(i)≡−⌊pi⌋×inv(p%i)(modp)
其中 inv(p%i) 我们已知,就能线性求 inv(i) (1⩽i⩽n) 啦~
线性求 inv(i!) (1⩽i⩽n)
先求出 inv(n!),之后
inv(i!)=inv((i+1)!)×(i+1) (1⩽i⩽n−1)
就结束了~
当然这个也可以配合 i! (0⩽i⩽n−1) 导出 inv(i) (1⩽i⩽n) 的取值,也就是
inv(i)=inv(i!)×(i−1)! (1⩽i⩽n)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义