Skip to content

Commit 678522b

Browse files
committed
Solve Modulo
1 parent ee5e9f4 commit 678522b

File tree

1 file changed

+50
-58
lines changed

1 file changed

+50
-58
lines changed

Modulo.cpp

Lines changed: 50 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,51 @@
1-
#include<bits/stdc++.h>
1+
#include <bits/stdc++.h>
2+
23
using namespace std;
3-
#define FOR(i,a,b) for(int i = (a); i <= (b); ++i)
4-
#define FORD(i,a,b) for(int i = (b); i >= (a); --i)
5-
#define TRAV(x,T) for(auto& x: (T))
6-
#define ALL(T) T.begin(), T.end()
7-
#define TAB(T,a,b) (T)+a, (T)+((b)+1)
8-
#define VAR(x) #x<<" = "<<x<<" "
9-
#define SZ(x) (int)(x).size()
10-
#define Nwd __gcd
11-
#define pb push_back
12-
#define st first
13-
#define nd second
14-
#define lc (v<<1)
15-
#define rc (v<<1|1)
16-
typedef long long ll;
17-
typedef long double ld;
18-
typedef pair<int, int> pii;
19-
typedef pair<int, ll> pil;
20-
typedef pair<ll, int> pli;
21-
typedef pair<ll, ll> pll;
22-
typedef vector<int> vi;
23-
#define deb if(0)
24-
25-
struct Modulo {
26-
ll MOD;
27-
Modulo(ll mod) {
28-
MOD = mod;
29-
}
30-
ll Moduluj(const ll &a) {
31-
if(a < MOD) return a;
32-
return a % MOD;
33-
}
34-
ll Power(ll a, ll b) {
35-
if(b == 0) return 1;
36-
ll ans = Power(a, b / 2);
37-
ans = Moduluj(ans * ans);
38-
if(b & 1) return Moduluj(ans * a);
39-
return ans;
40-
}
41-
ll Dodaj(ll a, ll b) {
42-
a = Moduluj(a), b = Moduluj(b);
43-
if(a + b >= MOD) return a + b - MOD;
44-
else return a + b;
45-
}
46-
ll Odejmij(ll a, ll b) {
47-
a = Moduluj(a), b = Moduluj(b);
48-
if(a - b < 0) return a - b + MOD;
49-
else return a - b;
50-
}
51-
ll Mnoz(ll a, ll b) {
52-
a = Moduluj(a), b = Moduluj(b);
53-
return Moduluj(a * b);
54-
}
55-
ll Dziel(ll a, ll b) {
56-
a = Moduluj(a), b = Moduluj(b);
57-
return Moduluj(a * Power(b, MOD - 2));
58-
}
59-
} Mod(1e9 + 7);
4+
5+
struct ModuloStruct {
6+
long long MOD;
7+
8+
ModuloStruct(long long mod) { MOD = mod; }
9+
10+
long long Modulo(const long long &a) {
11+
if (a < MOD)
12+
return a;
13+
return a % MOD;
14+
}
15+
16+
long long Power(long long a, long long b) {
17+
if (b == 0)
18+
return 1;
19+
long long ans = Power(a, b / 2);
20+
ans = Modulo(ans * ans);
21+
if (b & 1)
22+
return Modulo(ans * a);
23+
return ans;
24+
}
25+
26+
long long Add(long long a, long long b) {
27+
a = Modulo(a), b = Modulo(b);
28+
if (a + b >= MOD)
29+
return a + b - MOD;
30+
else
31+
return a + b;
32+
}
33+
34+
long long Subtract(long long a, long long b) {
35+
a = Modulo(a), b = Modulo(b);
36+
if (a - b < 0)
37+
return a - b + MOD;
38+
else
39+
return a - b;
40+
}
41+
42+
long long Multiply(long long a, long long b) {
43+
a = Modulo(a), b = Modulo(b);
44+
return Modulo(a * b);
45+
}
46+
47+
long long Divide(long long a, long long b) {
48+
a = Modulo(a), b = Modulo(b);
49+
return Modulo(a * Power(b, MOD - 2));
50+
}
51+
} Mod(1e9 + 7);

0 commit comments

Comments
 (0)