Skip to content

Commit b5c7eaa

Browse files
authored
feat: add combinatorics ncr compress snippet
1 parent 05ee32d commit b5c7eaa

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const int64_t md = 1e9 + 7;
2+
3+
int64_t fastpow(int64_t a, int64_t b, const int64_t &mod) {
4+
assert(0 <= b);
5+
if (b == 0)
6+
return 1;
7+
int64_t half = fastpow(a, b / 2, mod);
8+
int64_t answer = half * half % mod;
9+
if (b & 1)
10+
answer = answer * a % mod;
11+
return answer;
12+
}
13+
14+
int64_t inv(int64_t a, const int64_t &mod) { return fastpow(a, mod - 2, mod); }
15+
16+
const int MXF = 1e6;
17+
18+
int64_t fact[MXF];
19+
20+
void build_factorial() {
21+
fact[0] = 1;
22+
for (int i = 1; i < MXF; ++i) {
23+
fact[i] = fact[i - 1] * i % md;
24+
}
25+
}
26+
27+
int64_t nCr(int n, int r) {
28+
if (n < r)
29+
return 0;
30+
return fact[n] * inv(fact[n - r] * fact[r] % md, md) % md;
31+
};
32+
33+
// auto nCr = [&](int n, int r) -> int64_t {
34+
// if (n < r)
35+
// return 0;
36+
// return fact[n] * inv(fact[n - r] * fact[r] % md, md) % md;
37+
// };
38+
39+
// at main()
40+
// build_factorial();

0 commit comments

Comments
 (0)