个人算法模板——模数
作者:
Andrew1729
,
2022-01-29 10:06:37
,
所有人可见
,
阅读 385
模数
const int MOD = 998244353;
int norm(i6 x) {return x < 0 ? x % MOD + MOD : x % MOD; }
template<typename T>
T qmi(T a, int b) {
T res = 1;
while (b) {
if (b & 1) res *= a;
b >>= 1;
a *= a;
}
return res;
}
struct Mint {
int v;
// + - * /
Mint(int v = 0): v(norm(v)){}
Mint inv() const {return qmi(Mint(v), MOD - 2); }
friend Mint operator+(const Mint &x, const Mint &y) {return Mint(x.v + y.v);}
friend Mint operator-(const Mint &x, const Mint &y) {return Mint(x.v - y.v);}
friend Mint operator*(const Mint &x, const Mint &y) {return Mint(1ll * x.v * y.v % MOD);};
friend Mint operator/(const Mint &x, const Mint &y) {return x * y.inv();}
Mint &operator+=(const Mint &rhs) {*this = *this + rhs; return *this;}
Mint &operator-=(const Mint &rhs) {*this = *this - rhs; return *this;}
Mint &operator*=(const Mint &rhs) {*this = *this * rhs; return *this;}
Mint &operator/=(const Mint &rhs) {*this = *this / rhs; return *this;}
};