有趣的东西

  1 template<int mod>
  2 struct modular
  3 {
  4     int data;
  5     inline modular<mod> operator+(modular<mod> b)
  6     {
  7         modular<mod> res;
  8         res.data=data+b.data;
  9         if(res.data>=mod)
 10             res.data-=mod;
 11         return res;
 12     }
 13     inline modular<mod> operator-(modular<mod> b)
 14     {
 15         modular<mod> res;
 16         res.data=data-b.data;
 17         if(res.data<0)
 18             res.data+=mod;
 19         return res;
 20     }
 21     inline modular<mod> operator*(modular<mod> b)
 22     {
 23         modular<mod> res;
 24         res.data=(long long)data*b.data%mod;
 25         return res;
 26     }
 27     inline void operator+=(modular<mod> b)
 28     {
 29         data+=b.data;
 30         if(data>=mod)
 31             data-=mod;
 32         return;
 33     }
 34     inline void operator-=(modular<mod> b)
 35     {
 36         data-=b.data;
 37         if(data<0)
 38             data+=mod;
 39         return;
 40     }
 41     inline void operator*=(modular<mod> b)
 42     {
 43         data=(long long)data*b.data%mod;
 44         return;
 45     }
 46     inline bool operator==(modular<mod> b) const
 47     {
 48         return data==b.data;
 49     }
 50     inline bool operator!=(modular<mod> b) const
 51     {
 52         return data!=b.data;
 53     }
 54     inline bool operator<(modular<mod> b) const
 55     {
 56         return data<b.data;
 57         }
 58     inline modular<mod> operator+(int b)
 59     {
 60         modular<mod> res;
 61         res.data=data+b;
 62         if(res.data>=mod)
 63             res.data-=mod;
 64         return res;
 65     }
 66     inline modular<mod> operator-(int b)
 67     {
 68         modular<mod> res;
 69         res.data=data-b;
 70         if(res.data<0)
 71             res.data+=mod;
 72         return res;
 73     }
 74     inline modular<mod> operator*(int b)
 75     {
 76         modular<mod> res;
 77         res.data=(long long)data*b%mod;
 78         return res;
 79     }
 80     inline void operator+=(int b)
 81     {
 82         data+=b;
 83         if(data>=mod)
 84             data-=mod;
 85         return;
 86     }
 87     inline void operator-=(int b)
 88     {
 89         data-=b;
 90         if(data<0)
 91             data+=mod;
 92         return;
 93     }
 94     inline void operator*=(int b)
 95     {
 96         data=(long long)data*b%mod;
 97         return;
 98     }
 99     inline bool operator==(int b) const
100     {
101         return data==b;
102     }
103     inline bool operator!=(int b) const
104     {
105         return data!=b;
106     }
107     inline void operator=(int b)
108     {
109         data=b;
110         return;
111     }
112 };

-fno-elide-constructors

原文地址:https://www.cnblogs.com/hehe54321/p/8521964.html