#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef pair<int, int> PII;
typedef long long ll;
typedef long double ld;
int exgcd(int a, int b, ll &x, ll &y)
{
if(!b)
{
x = 1, y = 0;
return a;
}
ll d = exgcd(b, a % b, y, x);
y -= a / b * x;
return d;
}
int main()
{
IOS
int _;
cin >> _;
while(_ --)
{
int a, p;//模p意义下a的逆元
ll x, y;
cin >> a >> p;
int d = exgcd(a, p, x, y);
if(1 % d)
{
cout << "impossible" << endl;
continue;
}
cout << (x % p + p) % p << endl;
}
return 0;
}
exgcd求逆元
最新推荐文章于 2024-02-14 11:50:42 发布