Topics
Instead of calculating factorials (which are slow for large values), we can use a direct way to compute iteratively,
def binomial_coefficient(n, k):
if k > n - k:
k = n - k # Use C(n, k) = C(n, n-k) for efficiency
res = 1
for i in range(k):
res = res * (n - i) // (i + 1)
return res
print(binomial_coefficient(5, 2)) # Output: 10
This runs in time, which is optimal.