-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInv.cpp
More file actions
28 lines (26 loc) · 665 Bytes
/
Inv.cpp
File metadata and controls
28 lines (26 loc) · 665 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
long long Extgcd(long long a, long long b, long long& x, long long& y) {
long long d = a;
if (b != 0) {
d = Extgcd(b, a % b, y, x);
y -= (a / b) * x;
} else {
x = 1;
y = 0;
}
return d;
}
long long Inv(long long a) {
long long x, y;
Extgcd(a, MOD, x, y);
return (x % MOD + MOD) % MOD;
}
long long Inv(long long a) {
long long res = 1;
long long n = MOD - 2;
while (n > 0) {
if (n & 1) res = res * a % MOD;
a = a * a % MOD;
n >>= 1;
}
return res;
}