modint_common
クラス · modint (static_modint / dynamic_modint)
template <class Derived>
struct modint_common : modint_base;
概要
static_modint と dynamic_modint が共有する公開演算
Derived は umod(), mul(), is_prime_mod() を提供する。
計算量
- 各演算の行に記載
メンバ関数
| 名前 | 説明 | 計算量 |
|---|---|---|
val |
保持している標準剰余を返す | $O(1)$ |
pow |
n乗を返す | $O(\log n)$ |
inv |
乗法逆元を返す | 法を $m$ として $O(\log m)$ |
演算子
| 名前 | 説明 | 計算量 |
|---|---|---|
operator++ |
(1) 1を加算する (2) 1を加算する前の値を返す |
$O(1)$ |
operator-- |
(1) 1を減算する (2) 1を減算する前の値を返す |
$O(1)$ |
operator+= |
rhsを加算する | $O(1)$ |
operator-= |
rhsを減算する | $O(1)$ |
operator*= |
rhsを乗算する | $O(1)$ |
operator/= |
rhsで除算する | 素数法では法を $m$ として $O(\log m)$、動的法では $O(\log m)$ |
operator+ |
(1) 自身の値を返す (2) 和を返す |
$O(1)$ |
operator- |
(1) 加法逆元を返す (2) 差を返す |
$O(1)$ |
operator* |
積を返す | $O(1)$ |
operator/ |
商を返す | 法を $m$ として $O(\log m)$ |
operator== |
等しいか返す | $O(1)$ |
operator!= |
異なるか返す | $O(1)$ |
operator>> |
整数を入力して法で正規化する | $O(1)$ |
operator<< |
標準剰余を出力する | $O(1)$ |
メンバの詳細
operator++
// (1)
constexpr mint &operator++();
// (2)
constexpr mint operator++(int);
(1) 1を加算する
- 計算量: $O(1)$
(2) 1を加算する前の値を返す
- 計算量: $O(1)$
operator–
// (1)
constexpr mint &operator--();
// (2)
constexpr mint operator--(int);
(1) 1を減算する
- 計算量: $O(1)$
(2) 1を減算する前の値を返す
- 計算量: $O(1)$
operator+
// (1)
constexpr mint operator+() const;
// (2)
friend constexpr mint operator+(const mint &lhs, const mint &rhs);
(1) 自身の値を返す
- 計算量: $O(1)$
(2) 和を返す
- 計算量: $O(1)$
operator-
// (1)
constexpr mint operator-() const;
// (2)
friend constexpr mint operator-(const mint &lhs, const mint &rhs);
(1) 加法逆元を返す
- 計算量: $O(1)$
(2) 差を返す
- 計算量: $O(1)$
関連項目
static_modint— コンパイル時に法を固定する modintdynamic_modint— 実行時に法を設定する modintmodint998— 法998244353のstatic_modintmodint107— 法1000000007のstatic_modintmodint— 既定id -1のdynamic_modint