-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSafeCombinatorics.cpp
More file actions
70 lines (59 loc) · 1.11 KB
/
SafeCombinatorics.cpp
File metadata and controls
70 lines (59 loc) · 1.11 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
using ll = long long;
string PROBLEM_NAME = "time";
const int MAXN = 10000;
const ll mod = 998244353;
ll factorials[MAXN];
void fact()
{
factorials[0] = 1;
for (int i = 1; i < sizeof(factorials)/sizeof(factorials); i++)
factorials[i] = (factorials[i-1] * i) % mod;
}
ll binpow(ll b, ll p) //binary exponentiation
{
ll res = 1;
while (p > 0)
{
if ((p & 1) == 1)
res *= b;
res %= mod;
p >>= 1;
b = (b * b) % mod;
}
return res;
}
ll invMod(ll a) //fermat's little theorem
{
return binpow(a, mod-2);
}
ll divMod(ll a, ll b) // modular division
{
return (a * invMod(b))%mod;
}
ll multMod(ll a, ll b) // modular multiplication
{
return (a*b) % mod;
}
ll powMod(ll b, ll p)
{
ll ans = 1;
for (; p > 0; p--)
{
ans *= b;
ans %= mod;
}
return ans;
}
ll choose(ll n, ll k) //combinations
{
return ((factorials[n]%mod)*invMod((factorials[n-k]*factorials[k])%mod))%mod;
}
int main () {
ios_base::sync_with_stdio(0); cin.tie(0);
/*freopen((PROBLEM_NAME+".in").c_str(), "r", stdin);
freopen((PROBLEM_NAME+".out").c_str(), "w", stdout);
*/
}