核心思想:裴蜀定理 :
欧几里得算法: 辗转相除法求最大公约数
传入参数(int a,int b,int &x,int &y)
递归(int b,int a%b,int y,int x) xy换位置 方便计算(推公式)
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100010;
int exgcd(int a,int b,int &x,int &y)
{
if(!b) //b == 0 说明最深层 有且仅有一种xy取值
{
x = 1 ,y = 0;
return a;
}
else
{
int d = exgcd(b, a % b , y , x); //递归
y -= a/b * x; //由公式推出来 y的值
return d; //return exgcd();
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
int a,b,x,y;
scanf("%d %d", &a, &b);
exgcd(a,b,x,y);
printf("%d %d\n", x,y);
}
}