AcWing 877. 扩展欧几里得算法
原题链接
简单
作者:
minux
,
2020-04-29 10:36:33
,
所有人可见
,
阅读 485
#include <bits/stdc++.h>
using namespace std;
// 欧几里得算法
int gcd(int x, int y){
if(x%y) return y;
return gcd(y, x%y);
}
// 扩展欧几里得算法
int exgcd(int a, int b, int &x, int &y){
if(!b){
// 边界条件, 当b=0时返回一组组合, 最大公约数为a
x=1, y=0;
return a;
}
int d=exgcd(b, a%b, y, x); //(a, b)=(b, a mod b)
y-=a/b*x;
return d;
}
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin>>n;
while(n--){
int a, b, x, y;
cin>>a>>b;
exgcd(a, b, x, y);
cout<<x<<" "<<y<<endl;
}
return 0;
}