ACM数论逆元的总结

ACM数论逆元的总结
逆元的应⽤
求解 ( a/b )%m    时  ⼀般想法是  转化为(a%(b*m))/b,转化过程如下
令k = (a/b)/m(向下取整), x = (a/b)%m;
a/b = k*m + x (x < m);
a = k*b*m + b*x;
a%(b*m) = b*x;
a%(b*m)/b = x;
得证: a/b%m = a%(b*m)/b;(公式适⽤于很多情况:m不必是素数,b和m也不必互质)
wcg2010世界总决赛上⾯的公式适⽤于b较⼩,a需要在线求且较⼤的时候;
⽐如:求a/b的值,且另a = x^k, 求a的过程随时会爆精度所以需要对a进⾏取模,但是求的过程中如果是
直接对a进⾏%mod,之后再进⾏a/b,会出现错误的。正确的做法是根据上述公式,在求a过程中对(b*m)取模,之后再除以⼀次b即可。[ a/b%m = (a%(b*m))/b%m ]
所有的除法取模问题都可以⽤这种⽅法,但是当b很⼤的时候,则会出现爆精度问题,所以引出乘法逆元,将除法取模转换为乘法取模。
b存在乘法逆元的充要条件是b与模数m互质。
设令c为b的逆元,即b*c ≡ 1(mod m);
解释:满⾜同余⽅程,b*c和1对m的模数相同,即b*c对m取余为1(m > 1);
xscale那么 a/b = (a/b)*1 = (a/b)* ( (b*c)(mod m) ) = a*c(mod m);
kugoo2013下载即,除以⼀个数对m取模等于乘以这个数的逆元对m取模;
三种求逆元的⽅法&:
1.逆元求解利⽤扩欧。
2.当m为质数的时候直接使⽤费马⼩定理,m⾮质数时使⽤欧拉函数。
3.当m为质数的时候,使⽤神奇的线性⽅法。
扩展&:
1.利⽤乘法逆元求解组合数及组合数的其它求法。
基础教育参考2.线性时间求阶乘的逆元。
碱含量有兴趣的的话就去搜搜博客⾃学吧,博主以后再⼀⼀补上。

本文发布于:2024-09-21 11:14:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/471072.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:逆元   取模   乘法   质数   精度   组合
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议