gcd&exgcd(欧几里得算法及扩展欧几里得算法)
文章平均质量分 82
圣诞老人家
这个作者很懒,什么都没留下…
展开
-
暑假集训之gcd&exgcd简介
gcd算法就是平时所说的欧几里得算法,主要是来算最大公约数的,其原理是前面所提到的辗转相除法,这里就不再赘述了。除此之外,求最小公倍数的问题也是借助这个算法实现,具体的实现方法是:a,b最小公倍数=(a*b)/gcd(a,b);通常写为a/gcd(a,b)*b(防止运算中间溢出);gcd算法的模板1、递归算法int gcd(int x,int y){ return y原创 2016-08-03 12:29:14 · 357 阅读 · 0 评论 -
exgcd之求解最小正整数解
套用exgcd模板求得的是一组特殊解,但其实这一个方程式是有一个解系,在很多问题中是要你求得最小整数解,下面我们就解决这个问题,在阅读过很多博客加上自己的理解总结了两种方法(其实差距不大)1、a*x+b*y=gcd(a,b)void exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0;原创 2016-08-03 13:18:14 · 9496 阅读 · 0 评论 -
exgcd之求逆元
下面我们总结一下exgcd的另一个用途---求逆元 首先什么是逆元呢? a*x=1(mod m)这里,我们称 x 是 a 关于 m 的乘法逆元,其实也就是解a*x+m*y==1这个方程的解 再来举个例子详细解释一下逆元的用法 打个比方吧,就是给你个式子:(a*b/c)%MOD(1(a%MOD)*(b%MOD)*(c%MOD)%MOD;但是(a*b/c)%MOD(1(原创 2016-08-03 13:37:03 · 1556 阅读 · 0 评论 -
扩展欧几里得求|x|+|y|的最小值
在学习扩展欧几里得的过程中遇到这样一个题Ms. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of medicine. For example, to measure 200mg of aspirin using 300mg weights and 700mg we原创 2016-08-03 13:43:04 · 587 阅读 · 0 评论