summaryrefslogtreecommitdiff
path: root/content/math/binomial3.cpp
blob: 7a6ab4ec9efaccba8d9c0b997dcd3c0a234a25ec (plain)
1
2
3
4
5
6
7
8
9
10
ll calc_binom(ll n, ll k, ll p) {
	assert(n < p); //wichtig: sonst falsch!
	if (k > n) return 0;
	ll x = k % 2 != 0 ? p-1 : 1;
	for (ll c = p-1; c > n; c--) {
		x *= c - k; x %= p;
		x *= multInv(c, p); x %= p;
	}
	return x;
}