扩展欧几里得

Posted

tags:

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

 1 /*************************************
 2 
 3        扩展欧几里得模板
 4      给出ax+by=gcd(a,b)求gcd(a,b),x,y。
 5      gcd(a,b)为a,b的最大公约数。
 6 
 7 *************************************/
 8 
 9 #include<iostream>
10 using namespace std;
11 
12 ///扩展gcd,可以求出gcd(a,b)以及ax+by=gcd(a,b)中x,y的值
13 int extendGcd(int a,int b,int &x,int &y)   
14 {
15     if(b==0)
16     {
17         x=1;
18         y=0;
19         return a;
20     }
21    int d= extendGcd(b,a%b,x,y);
22    int tmp=x;
23    x=y;
24    y=tmp-a/b*y;
25    return d;
26 }
27 
28 int main()
29 {
30     int a,b,x,y;
31     while (cin>>a>>b)
32     {
33         cout<<extendGcd(a,b,x,y)<<endl;
34         cout<<x<<" "<<y<<endl;
35     }
36 }

 

以上是关于扩展欧几里得的主要内容,如果未能解决你的问题,请参考以下文章

扩展欧几里得算法

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

POJ 1061 青蛙的约会 扩展欧几里得

poj2115 C Looooops——扩展欧几里得

扩展欧几里得算法的模板实现

不定方程与扩展欧几里得