summaryrefslogtreecommitdiff
path: root/math/binomial3.cpp
blob: f52337c6cd4527ee413a8052afb847cf3ed73764 (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;
}