1
0
Fork 0

Update number/mll.cc

This commit is contained in:
subcrip 2024-04-10 12:50:26 +08:00
parent 4a682bd607
commit 3c19859012
1 changed files with 3 additions and 3 deletions

View File

@ -6,8 +6,8 @@ template <ll mdl> struct MLL {
friend MLL operator*(const MLL& lhs, const MLL& rhs) { return mod(lhs.val * rhs.val, mdl); } friend MLL operator*(const MLL& lhs, const MLL& rhs) { return mod(lhs.val * rhs.val, mdl); }
friend MLL operator/(const MLL& lhs, const MLL& rhs) { return mod(lhs.val * mod(inverse(rhs.val, mdl), mdl), mdl); } friend MLL operator/(const MLL& lhs, const MLL& rhs) { return mod(lhs.val * mod(inverse(rhs.val, mdl), mdl), mdl); }
friend MLL operator%(const MLL& lhs, const MLL& rhs) { return mod(lhs.val - (lhs / rhs).val, mdl); } friend MLL operator%(const MLL& lhs, const MLL& rhs) { return mod(lhs.val - (lhs / rhs).val, mdl); }
friend MLL operator==(const MLL& lhs, const MLL& rhs) { return lhs.val == rhs.val; } friend bool operator==(const MLL& lhs, const MLL& rhs) { return lhs.val == rhs.val; }
friend MLL operator!=(const MLL& lhs, const MLL& rhs) { return lhs.val != rhs.val; } friend bool operator!=(const MLL& lhs, const MLL& rhs) { return lhs.val != rhs.val; }
void operator+=(const MLL& rhs) { val = (*this + rhs).val; } void operator+=(const MLL& rhs) { val = (*this + rhs).val; }
void operator-=(const MLL& rhs) { val = (*this - rhs).val; } void operator-=(const MLL& rhs) { val = (*this - rhs).val; }
void operator*=(const MLL& rhs) { val = (*this * rhs).val; } void operator*=(const MLL& rhs) { val = (*this * rhs).val; }
@ -23,4 +23,4 @@ ostream& operator<<(ostream& out, const MLL<mdl>& num) {
template <ll mdl> template <ll mdl>
istream& operator>>(istream& in, MLL<mdl>& num) { istream& operator>>(istream& in, MLL<mdl>& num) {
return in >> num.val; return in >> num.val;
} }