nCr mod p
効率的に計算する必要があります。今、このコードを書きましたが、制限時間を超えています。より最適なソリューションを提案してください。
私の場合、p = 10^9 + 7 and 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
は正しく機能するようです。間違っていたら指摘してください!