---
# System prepended metadata

title: modint
tags: [codebook]

---

---
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;}
```