我需要高效计算
对于我的情况,
nCr mod p
。目前,我已经编写了这段代码,但它超出了时间限制。请建议更优的解决方案。对于我的情况,
p = 10^9 + 7,1 ≤ n ≤ 100000000
我还要确保没有溢出,因为nCr mod p
保证适合32位整数,但是n!
可能会超过限制。def nCr(n,k):
r = min(n-k,k)
k = max(n-k,k)
res = 1
mod = 10**9 + 7
for i in range(k+1,n+1):
res = res * i
if res > mod:
res = res % mod
res = res % mod
for i in range(1,r+1):
res = res/i
return res
PS:我认为我的代码可能不完全正确。然而,它似乎能够正确地处理小n
。如果有错误,请指出!