逆元模版

#include <iostream>
using namespace std;
#define ll long long
const int N = 1e5 + 5;
int inv[N];
void invv(int n, int m) {//递推打表
    inv[1] = 1;
    for (int i = 2; i <= n; i ++)
        inv[i] = (ll)(m - m / i) * inv[m % i] % m;
}
ll extgcd(ll a, ll b, ll x, ll y) {//拓展欧几里得
    if (!b) {
        x = 1;
        y = 0;
        return a;
    }
    ll d = extgcd(b, a % b, x, y);
    ll temp = x;
    x = y;
    y = temp - a / b * y;
    return d;
}
ll getinv(ll a, ll m) {
    ll x, y;
    extgcd(a, m, x, y);
    x = (x % m + m) % m;
    return x;
}
int main(int argc, const char * argv[]) {

    return 0;
}

猜你喜欢

转载自blog.csdn.net/henu_jizhideqingwa/article/details/81483365