def fac(n): """Factorial n!. Returns integer.""" _assert(isinstance(n, int), '`n` must be int') _assert(n >= 0, '`n` must be >= 0') if n == 1 or n == 0: return 1 return n * fac(n-1)
def binom(n, k): """Binomial coefficient ("n over k"). fac(n)/(fac(k)*fac(n-k)) """ _assert(n >= k >= 0, 'illegal input, only n >= k >= 0') return fac(n)/(fac(k)*fac(n-k))