serna37's Library

Logo

C++ アルゴリズムとデータ構造のライブラリ

View the Project on GitHub serna37/library-cpp

:heavy_check_mark: MOD Fermatの小定理
(library/number/mod/mod_inverse.hpp)

MOD Fermatの小定理

できること

計算量

$O(logM)$

使い方

long long inv = mod_inverse(a, MOD);

Depends on

Required by

Verified with

Code

#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); }
Back to top page