2023-03-01 16:09阅读: 12评论: 0推荐: 0

乘法逆元学习笔记

引入

有很多题的答案可能会很大,这时候通常会让我们输出模一个数的结果。当我们的计算中只用到了加法,可以边加边模;只用到了乘法,可以边乘边模。但如果有除法,就不能边除边模了。这时候就要用到乘法逆元:a×inv(b)×inv(c)%mod=ab×c%mod

有了乘法逆元,在过程中想怎么模就怎么模,非常方便。

计算

我们都知道,当模数为质数时,可以用快速幂求 amod2,否则可以用扩展欧几里得来求。

在组合数中,我们经常会用到阶乘逆元。当我们算出了 1n 的阶乘(%mod)后,就可以 O(n)算出每一个阶乘逆元:首先用上面两种方法之一算出 inv(n!),我们知道 inv(n!)=1n!%mod,那么 inv((n1)!)=1n!×n%mod=inv(n)×n%mod,以此类推即可倒推出每一个数的阶乘逆元。

将其扩展为一般形式,就能得到线性求任意 n 个数的逆元:将这 n 个数求出前缀积,记为 s1sn,求出 inv(sn),则 inv(sn1)=inv(sn)×n,以此类推,求出每一个 inv(si),即可得出 inv(ai)=inv(si)×si1

posted @   曹轩鸣  阅读(12)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起