算法?日更?第五十六期扩展欧几里得算法

Posted tfls-gzr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法?日更?第五十六期扩展欧几里得算法相关的知识,希望对你有一定的参考价值。

▎裴蜀定理

  这个定理很简洁,就是关于x,y(都是整数)的不定方程在下面的情况下:

  技术图片

  必定有解。

  这只是个前置知识,就不证明了(主要是小编太菜)

▎不定方程

  考虑方程ax+by=c的解的情况:

  • 若c=gcd(a,b),那么依照裴蜀定理有解;
  • 若c=k*gcd(a,b),先两边同除k,就会转化成标准形式,有解;
  • 若c与gcd(a,b)互质,那么无解;

  所以问题就是:

  技术图片

  如何解决,只要解决了这个问题,所有解的情况就解决了。

▎问题解决

  现在我们考虑怎么让这个问题更简单,思考这样一个问题,已知:

  技术图片

  的解(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 

以上是关于算法?日更?第五十六期扩展欧几里得算法的主要内容,如果未能解决你的问题,请参考以下文章

算法?日更?第五十期二分图(km算法)

Android Studio 第五十六期 - Android之系统设置选项的包名

扩展欧几里得算法AcWing877.扩展欧几里得算法——扩展欧几里得算法证明

扩展欧几里得算法求逆元算法结果是负数

利用扩展的欧几里得算法求逆元

欧几里得算法和扩展欧几里得算法