Question: 
Write a function to compute the value of ncr mod p.


Model's Code:
def nCr_mod_p(n, r, p):
    if r > n:
        return 0

    numerator = 1
    denominator = 1

    for i in range(r):
        numerator = (numerator * (n - i)) % p
        denominator = (denominator * (i + 1)) % p

    def mod_inverse(a, p):
        return pow(a, p - 2, p)

    return (numerator * mod_inverse(denominator, p)) % p



Sample Correct Code:
def nCr_mod_p(n, r, p): 
	if (r > n- r): 
		r = n - r 
	C = [0 for i in range(r + 1)] 
	C[0] = 1 
	for i in range(1, n + 1): 
		for j in range(min(i, r), 0, -1): 
			C[j] = (C[j] + C[j-1]) % p 
	return C[r] 


Asserts:
assert nCr_mod_p(10, 2, 13) == 6
assert nCr_mod_p(11, 3, 14) == 11
assert nCr_mod_p(18, 14, 19) == 1


Tests:
Test 1 of 3: PASS
Test 2 of 3: FAIL: AssertionError()

Test 952 of 974: 729/952 (76.57563025210085%): failed