{算法}论蒟蒻如何掌握ExGcd
来源:互联网 发布:vscode 代码提示 编辑:程序博客网 时间:2024/06/06 02:15
首先,欢迎和大家交流并打脸
有兴趣来看的各位,估计也都知道Gcd是个什么。但是为了凑字数部分同学的利益,还是要简单介绍一下。
Gcd(a,b) :即a,b的最大公约数
且有Gcd(a,b)=Gcd(b,amodb)(a>b)
来一段死板的证明。
证明:
a可以表示成
假设d是a,b的一个公约数
则有
因此d也是(b,a mod b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,
其最大公约数也必然相等,得证
注意:这里(a,b)和(b,a mod b)的所有公因数皆相等。
一般来讲,只需知道它的用法即可。
模板
int Gcd(int a,int b){ if(b == 0) return a; return Gcd(b, a % b);}
什么是ExGcd呢?
已知a,b,解形如
根据拓展欧几里德,当且仅当c是Gcd(a,b)的倍数时,方程有整数解。我不会证
所以原方程可变形为
由上文,
那么原方程又变形为
而
因此,在原本Gcd的递归过程中,一起计算x,y的解。
当b=0时,x=1,y=0。
给段代码理解理解
int ExGcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0; return a; } int r=ExGcd(b,a%b,x,y); int t=x; x=y; y=t-a/b*y; return r;}
3 0
- {算法}论蒟蒻如何掌握ExGcd
- 扩展欧几里得算法(exgcd)
- exgcd
- Exgcd
- exgcd
- exgcd
- EXGCD
- A/B + exgcd (拓展欧基里德算法)
- hdu1576(扩展欧几里得算法exgcd)
- 扩展欧几里得算法(exgcd) 学习笔记
- 【笔记】扩展欧几里得算法(exgcd)
- java实现 拓展欧几里得算法 exgcd
- GCD ExGCD 扩展欧几里德算法证明与算法
- 数论专题小结:gcd算法与exgcd算法
- 欧几里得算法(GCD)和扩展欧几里得算法(EXGCD)
- 关于扩展欧几里得算法(exgcd)的总结与复习
- 基础数论算法(2) GCD LCM EXGCD 学习笔记
- 遗传算法入门掌握
- CH负责内容的两个人——北漂18年(66)
- CircularImageView
- 《加密与解密》学习笔记(三) - 脱壳
- 编码练习——Java-5-接口、继承与多态
- HDU1756--判断点与多边形的相对位置
- {算法}论蒟蒻如何掌握ExGcd
- 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-2:单链表操作B
- POJ Gold Balanced Lineup 3274 哈希
- LeetCode[377] Combination Sum IV
- 数据结构实验之链表六:有序链表的建立
- Class.getResource与Class.getClassLoader.getResource
- 数据结构实验之二叉树二:遍历二叉树
- 数据结构实验之二叉树二:遍历二叉树