标签:family 结果 cal style 原理 lib 直线 变量 存在
gcd欧几里德算法 求取最大公约数gcd(a,b)
这个不用多说了
extgcd拓展欧几里德算法 用于求解 ax+by=gcd(a,b)的解
这个要多说一下
ax+by=c,(a,b,c都是常数)
这就是一个直线方程嘛!(x,y)就是一条直线的轨迹
但是呢 我们在计算机中经常要求一些离散的东西,也就是我们要求整数解
这个咋求呢,就可以用这个神仙方法extgcd可以来求
我们可以用extgcd求解 ax+by=c的整数点的解
extgcd的内容呢:extgcd可以能求gcd----原理嘛,自己慢慢想这个神仙方法。extgcd不是直接去解我们的方程 ax+by=c的,但是可以间 接求解,extgcd 求解的是什么呢
extgcd 可以直接求解的是 ax+by=gcd(a,b)的解。
也就是说我们调用extgcd可以获得的结果是ax+by=gcd(a,b)的一组整数解。
那我们要求的是什么 是ax+by=c 而不是ax+by=gcd(a,b)啊
那咋办 我们可以设置一个变量 k axk+byk=gcd(a,b)*k 这个很好说吧!就是等式两边同时乘k。
如果我们存在整数k 使得gcd(a,b)*k等于c 那我们要求的ax+by=c的解就出来啦
就是我们extgcd 求出的解乘上这个k
如果不存在这样的k咋办("▔□▔) 自然那结果就是无解啦
标签:family 结果 cal style 原理 lib 直线 变量 存在
原文地址:https://www.cnblogs.com/DWVictor/p/10283215.html