扩欧的过程
#include<bits/stdc++.h>
using namespace std;
int n, x, y;
using LL = long long ;
int exgcd(int a, int b, int &x, int &y)
{
if (!b)
{
x = 1, y = 0;
return a;
}
int d = exgcd(b, a % b, x, y);
int z = x;
x = y;
y = z - a / b * y;
return d;
}
int main()
{
cin >> n;
while (n --)
{
int a, b, m;
cin >> a >> b >> m;
int d = exgcd(a, m, x, y);
if (b % d) puts("impossible");
else
{
x = (LL)x * b / d % m;
cout << x << endl;
}
}
return 0;
}
x,y就是a*x+b*y==m的解