线性求逆元及其过程

写在前面

连续两天考了求逆元。。。。。。所以想着写一篇关于线性求逆元的博客。。

先给程序:

inv[1]=1;
for(int i=2;i<=n;++i)
  inv[i]=MOD-(long long)MOD/i*inv[MOD%i]%MOD;

然后一波推导:

我们要求i在模p意义下的逆元inv[i],那么我们就设ki+r=p,所以ki+r\equiv0(mod p)。

移项可以得到:r\equiv-ki(mod p)。

两边同时除以ir,就可以得到这个式子:

\frac{1}{i}\ \equiv \frac{-k}{r}(mod p)

那么i分之一就是i在模p意义下的逆元,r分之一就是r在模p意义下的逆元。

变成这个式子:inv[i]\equiv-k*inv[r](mod p)。

因为r<i,所以r=p%i,式子变为inv[i]\equiv-k*inv[p%i](mod p)。

右边加上一个p:inv[i]=p-k*inv[p%i],k化为p/i(向下取整了所以不考虑r),最后inv[i]就化为了p-p/i*inv[p%i],就是上面的递推式。证毕。


PS:如果有纰漏之处请dalao指出!蒟蒻马上修正!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值