求逆元

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;
}
posted @ 2021-10-27 20:42  Gsding  阅读(61)  评论(0)    收藏  举报