C++ アルゴリズムとデータ構造のライブラリ
#include "library/number/mod/mod_inverse.hpp"$O(logM)$
long long inv = mod_inverse(a, MOD);
#pragma once
#include "library/number/mod/mod_pow.hpp"
long long mod_inverse(long long a, long long m) { return mod_pow(a, m - 2, m); }#line 2 "library/number/mod/mod_pow.hpp"
long long mod_pow(long long a, long long n, long long m) {
long long res = 1ll;
while (n > 0) {
if (n & 1) res = res * a % m;
a = a * a % m;
n >>= 1ll;
}
return res;
}
#line 3 "library/number/mod/mod_inverse.hpp"
long long mod_inverse(long long a, long long m) { return mod_pow(a, m - 2, m); }