--- tags: codebook --- # modint ```cpp= #include<iostream> using namespace std; constexpr int mod = 998244353; long long div(long long a, long long b = mod - 2) { long long ret = 1; for (a %= mod; b; b >>= 1, a = a * a % mod) if (b & 1) ret = ret * a % mod; return ret; } struct modint {int x; modint(const int& _ = 0): x(mod + _) {x %= mod;} operator bool() {return x;}}; modint operator+(const modint& a, const modint& b) {return (a.x + b.x) % mod;} modint operator-(const modint& a, const modint& b) {return (a.x - b.x + mod) % mod;} modint operator*(const modint& a, const modint& b) {return 1LL * a.x * b.x % mod;} modint operator/(const modint& a, const modint& b) {return 1LL * a.x * div(b.x) % mod;} modint& operator+=(modint& a, const modint& b) {return a = a + b;} modint& operator-=(modint& a, const modint& b) {return a = a - b;} modint& operator*=(modint& a, const modint& b) {return a = a * b;} modint& operator/=(modint& a, const modint& b) {return a = a / b;} istream& operator>>(istream& is, modint& n) {is >> n.x; return is;} ostream& operator<<(ostream& os, const modint& n) {os << n.x; return os;} ```