求逆元
b|a -> a 能整除b
a = b(mod p) -> p|(a-b)

简单的地说,在计算机中,我们让整数除以整数,不一定是整数,但整数乘以整数一定是整数。因此我们在求解整数相除,我们可以通过求他的逆元来计算
逆元一般是来求一个x,使得b*x mod m = 1

快速幂求逆元
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll fast (ll a, ll b, ll p){
ll ans = 1;
a %= p;
while (b){
if (b%2) ans = ans * a % p;
b /= 2;
a = a * a % p;
}
return ans;
}
int main(){
ll n, a, p;
cin >> n;
while (n --){
cin >> a >> p;
if (a % p == 0) cout << "impossible" << endl;
else cout << fast (a,p-2,p) << endl;
}
return 0;
}

浙公网安备 33010602011771号