扩展欧几里得的应用(超详细求逆元求解方程)
扩展欧几里得算法:
1.扩展欧几里得算法可以求逆元
2.扩展欧几里得算法可以求类似 ax+by=m, 的所有整数解,当m%gcd(a,b)==0 则ax+by=m有无线多个解,否则无解
扩展欧几里得的基础式 ax+by=gcd(a,b) 下面会用到这个式子
下面我会给出这个基础式的模板
扩展欧几里得算法求逆元:
刚开始值知道这个算法可以求解逆元,
逆元的定义:ax1(mod b) (注意gcd(a,b)==1的时候才能保证a的逆元是x)ax%b=1ax-by=1(是不是和上面的基础式差不多)就是一样的。用模板回溯找到x不就是a 的逆元了吗?
现在给出模板吧 这个模板只能求形如ax+by=gcd(a,b)的式子
相关的解释会在代码中解释;
code:
ll exgcd(ll a,ll b,ll &x,ll &y){if(b==0){//递归到终点 ax+by=gcd(a,b)=a 此时a就是 最大公约数 x=1;//把x=1 ,y=0带入发现满足 y=0;return a;}ll r=exgcd(b,a%b,x,y);//回溯 (一般都是在递归的后面)回溯是因为要求原方程ax+by=gcd(a,b)的解 ll temp=x;//这个证明会在下面给出解释 x= y; y=temp-(a/b)*y; return r;
}
这个是上面回溯的解释:
上层的式子 ax1+by1=gcd(a,b);
下层的式子 bx2+a%by2=gcd(b,a%b);
我们要求的是上层的x y
gcd(a,b)=gcd(b,a%b);
所以
ax1+by1=bx2+a%by2
ax1+by1=bx2+(a-(a/b)*b)y2
因此
ax1=ay2
by1=b(x2-(a/b)y2)
出了exgcd求逆元还有 费马小定理 ,和递推求逆元
请大家看这个博客(非常详细):
https://blog.csdn.net/qq_44797733/article/details/103037510?
扩展欧几里得求解ax+by=m的式子(m%gcd(a,b)==0)
这个式子有解的前提:m%gcd(a,b)==0 ;
然后就是这个方程如果没有对x和y有范围上的要求的话是有无线的解的
我们通过上面的模板可以求解出 ax+by=gcd(a,b)的一个特解 x y 然后等式俩边同时乘以m/gcd(a,b) 那么是不是就变成了ax+by=m的式子 ,此时的x和y也是乘过m/gcd(a,b)的,即此时x y是ax+by=m 的一个特解
现在的问题是怎么求其他的解:
我们让式子 ax+by=m 中 x+b/gcd(a,b) y-a/gcd(a,b) 代入式子得 ax+a*b/gcd(a,b)+by-a*b/gcd(a,b)=m 这里是不是ax+by=m了 相当于这个式子加一个a,b 的最小公倍数 然后又减去一个最小公倍数 。
要是x,y没范围的话就可以求解的个数了。没错是这样的。。。。
接下来给大家分享一个相关的题目:Modified LCS
这里是题解:
https://blog.csdn.net/qq_44797733/article/details/107536436
强烈建议把 逆元的求解 和本篇文章一起看 这样可以更好的学习
扩展欧几里得的应用(超详细求逆元求解方程)相关推荐
- 牛客多校3 - Fraction Construction Problem(扩展欧几里得)
题目链接:点击查看 题目大意:给出 a 和 b ,求解满足条件的 c,d,e,f ,使得: d < b f < b c,e 均为小于等于 4e12 的正整数 题目分析:分情况讨论一下,首先 ...
- 扩展欧几里得 解方程小记
本来以前学习的时候就懵懵懂懂,长时间不用就完全不会了.. 首先对于扩展欧几里得,对于最一般的方程形式 ax+by=gcd(a,b),此方程一定有整数解,扩展欧几里便得能够求出其中的一组整数解x0,y0 ...
- 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)
乘法逆元 对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n) 一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 逆元的含义:模n意义下,1个数a如果 ...
- 浅谈扩展欧几里得定理(附裴蜀定理)
关于扩展欧几里得定理 众所周知,扩展欧几里得定理是用来求形如(a,b,c皆为整数)这样的方程的一组解[注,仅是一组解]的定理 它的原理比较复杂,本人学了挺久才懂了一点,这里就不谈了,扩欧的核心是它的思 ...
- 欧拉定理相关及扩展欧几里得
威尔逊定理.费马定理.欧拉函数.欧拉定理.逆元.exgcd 威尔逊定理: ( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)! \equiv -1 \pmod p (p−1)!≡− ...
- 乘法逆元之欧几里得和扩展欧几里得
乘法逆元 文章目录 乘法逆元 一.模运算的性质 二.除法的模运算 1.除法模运算 2.解决除法模运算问题 三.乘法逆元 1.定义 2.**逆元是干什么的呢** 四.求解逆元 1.费马小定理 2.扩展欧 ...
- POJ 1061 青蛙的约会 (扩展欧几里得)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 97673 Accepted: 18409 Descripti ...
- 扩展欧几里得 POJ 1061
感觉这道题目的数据好水啊...我的代码我都觉得姿势特别奇怪...竟然还过了... 好吧,原来不是姿势奇怪,而是逆元需要用的时候是余数也需要的时候,这里的余数是不需要的,所以就AC了 就说一下碰到的问题 ...
- 求逆元(线性求逆元)及其扩展欧几里得
线性求逆元模板: int inv[maxn]; void initInverse(){inv[1] = 1;for(int i = 2; i <= maxn; i++)inv[i] = (p - ...
最新文章
- pyinstaller3.5 和 python 3.8 不兼容
- POJ 1944 - Fiber Communications
- 以太坊源码linux下如何编译,以太坊教程:搭建环境、编写编译一个智能合约
- [云炬创业基础笔记]第七章创业资源测试1
- 人机接口要学哪些计算机语言,智能人机接口
- java 上传远程图片,java上传图片到另一台服务器上,怎么解决
- java打卡-day3 变量和数据类型
- 成都这家AI语音芯片公司又融了数千万,能“偷袭”科大讯飞不?
- jQuery 根据数组对象中的属性值删除当前对象
- 一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间
- 机器学习落地的五个阶段
- java休闲游戏背景音乐推荐_休闲益智类游戏背景音乐推荐
- 不采用Matlab函数,自行设计基于双线性插值的图像放大程序
- python实现键盘自动输入_人生苦短我用Python——模拟鼠标点击和键盘输入的操作...
- 【MVC 4】4.MVC 基本工具(Visual Studio 的单元测试、使用Moq)
- python的歌曲评论数据分析_用Python爬取陈奕迅歌曲10万条评论的新发现
- 神经网络自我认知模型
- App渠道打包的最佳攻略,一次解决打包难题
- 我的人生只适合黑夜,第一天
- 不用加减乘除符号的情况下实现加法运算(js代码)