标签:exgcd mil 整数 题解 lin 如何 除法 turn style
▎裴蜀定理
这个定理很简洁,就是关于x,y(都是整数)的不定方程在下面的情况下:
必定有解。
这只是个前置知识,就不证明了(主要是小编太菜)。
▎不定方程
考虑方程ax+by=c的解的情况:
所以问题就是:
如何解决,只要解决了这个问题,所有解的情况就解决了。
▎问题解决
现在我们考虑怎么让这个问题更简单,思考这样一个问题,已知:
的解(x,y),那么怎么推出:
的解(x‘,y’)呢?
先抛出结论:
下面是证明过程:
知道了这个东西之后,我们就可以在算完
的时候很快推出:
这样可以层层递归下去,直到y=0,那么x=1,y=0的情况下就是a+0=gcd(a,0),此条件成立,那么再回溯回去就可以了。
▎代码实现
感觉像极了辗转相除法。
1 pair<int,int> exgcd(int a,int b) 2 { 3 if(b==0) return pair(1,0); 4 pair<int,int> sum=exgcd(b,a%b); 5 return pair<int,int>(y,x-a/b*y); 6 }
标签:exgcd mil 整数 题解 lin 如何 除法 turn style
原文地址:https://www.cnblogs.com/TFLS-gzr/p/11395285.html