给定 n组 ai,pi,其中 pi 是质数,求 ai 模 pi 的乘法逆元,若逆元不存在则输出 impossible
。
同余:整数a,b,m满足a mod m = b mod m, 称为a和b对m同余。
性质:a-b是m的整数倍。
eg:23-5是6的整数倍,23 mod 6 = 5 mod 6。
逆元
(a+b)%p=(a%p+b%p)%p
(a-b)%p=(a%p-b%p+p)%p//防止出现负数
(a*b)%p=((a%p)*(b%p))%p
但是除法不满足-->使用逆元
其中c为b的逆元
所以 求(a/b)%p即求(a*inv(b))%p-->((a%p)*(inv(b)%p))%p
计算逆元->费马小定理
(a/b)%p=(a*(b^(p-2)))%p
//a是不能被质数p整除的正整数,所以两个数互质,gcd(a,p) = 1
#include<bits/stdc++.h>
using namespace std;
int n, a, p;
void qmi(long long a, long long k, long long p)
{
long long res = 1;
while(k)
{
if(k&1) res = res*a%p;
a = a*a%p;
k>>=1;
}
if(a%p) cout<<res<<endl;
else cout<<"impossible"<<endl;
}
int main()
{
cin >>n;
while(n--)
{
cin >>a >>p;
qmi(a, p-2, p);
}
return 0;
}