blob: f37aea5de544615e24e38c87e5798ad9ae77d878 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
constexpr ll lim = 10'000'000;
ll fac[lim], inv[lim];
void precalc() {
fac[0] = inv[0] = 1;
for (int i = 1; i < lim; i++) fac[i] = fac[i-1] * i % mod;
inv[lim - 1] = multInv(fac[lim - 1], mod);
for (int i = lim - 1; i > 0; i--) inv[i-1] = inv[i] * i % mod;
}
ll calc_binom(ll n, ll k) {
if (n < 0 || n < k || k < 0) return 0;
return (fac[n] * inv[n-k] % mod) * inv[k] % mod;
}
|