扩展欧几里得--part3
来源:互联网 发布:真三国无双7mac版 编辑:程序博客网 时间:2024/06/03 22:01
乘法逆元
扩欧不仅解一元同模方程好用,而且能求乘法逆元.
概念引入
如果我们要算两个贼大的数相除取模的结果,而我们知道乘法与加法减法运算都是可以先取余再运算的,不影响结果。但是除法比如
12 / 3 % 5 = 4
12 % 5 / 3 = 0.666666就马上gg了,
所以,我们引入了乘法逆元的概念(可以理解成再取模方程中除以一个数等于乘它的逆元[类似倒数])
令 a / b % mod = c
则 a / b = k*mod + c
a = k * b * mod + b * c
这个时候 如果可以找到一个数 inv(b) 使得 b * inv(b) % mod = 1
那么我们给两边同时乘上inv(b) 就有
a * inv(b) = k * mod + c
则原算式解为(a%mod*inv(b)%mod)%mod
所以我们就可以巧妙的将原先的除法转换成了乘法
那么这个问题的关键就在于b * inv(b) % mod = 1有解
这实际上就是扩展欧几里得判断是否有解,那么b 与 mod必须互质
求乘法逆元方法
而如何求乘法逆元(inv(b))咧?
很简单啊,套到扩欧里面呗
b * inv(b) % mod = 1转化一下可以得到b*inv(b)=k*mod+1;
再移项得到b*inv(b)+k*mod=1(此处没变号不是写错而是对于模运算下加减是可以换的)
所以inv(b)就是extgcd(b,mod)解出的x了.
ps:如果出现负的要稍微处理下
阅读全文
0 0
- 扩展欧几里得--part3
- 【欧几里得&扩展欧几里得】
- 欧几里得和扩展欧几里得
- 欧几里得 与 扩展欧几里得
- 欧几里得&扩展欧几里得
- 欧几里得和扩展欧几里得
- 欧几里得与扩展欧几里得
- 欧几里得和扩展欧几里得
- 欧几里得 与 扩展欧几里得
- 欧几里得 扩展欧几里得
- 欧几里得与扩展欧几里得
- 欧几里得 & 扩展欧几里得
- 欧几里得 与 扩展欧几里得
- 欧几里得和扩展欧几里得
- 欧几里得与扩展欧几里得
- 扩展欧几里得
- 扩展欧几里得
- 扩展欧几里得
- 关于opencv自带的PCA降维我有话要说
- 龟兔赛跑
- 视觉学习一 ——在Ubuntu14.04下安装OpenCV3.0
- super 关键字的应用
- HDU 4667 计算几何 (乱搞)
- 扩展欧几里得--part3
- windows下安装dig
- asynctask展示listview
- The Linux USB Video Class (UVC) driver
- eclipse中配置maven
- 文本输入框、密码输入框
- 1014 C基础-等差数列 C
- selenium1和2区别
- Linux 基础操作(十四)————rpm、yum