/*
裴蜀定理:公因数构造
任意a,b,存在非零整数x、y,使得(a,b)= x * a + y * b
扩展欧里几德算法:一种构造x、y的方法,构造的方式证明裴蜀定理
(a, 0): x = 1, y = 0
(a, b) -- x, y
(b, a mod b): d = b * y + (a mod b) * x = b * y + (a - 下整a/b * b) * x = b * (y - 下整a/b * x) + a * x
*/
/*
I n:ai, bi
构造x,y,使得ai*xi + bi*yi = gcd(ai, bi)
O xi, yi
I
2
4 6
8 18
O
-1 1
-2 1
*/
#include <iostream>
#include <algorithm>
using namespace std;
// 扩展欧里几德算法:构造最大公因数的配比x,y
int exgcd(int a, int b, int &x, int &y)
{
// 递归基:b == 0
if (!b)
{
x = 1, y = 0;
return a;
}
int d = exgcd(b, a % b, y, x);
y -= a / b * x;
return d;
}
int main()
{
int n;
scanf("%d", &n);
while (n -- )
{
int a, b;
scanf("%d%d", &a, &b);
int x, y;
exgcd(a, b, x, y);
printf("%d %d\n", x, y);
}
return 0;
}