一尘不染

求大n和k模m的二项式系数

algorithm

我想使用以下约束来计算nCk mod m:

n <= 10 ^ 18

k <= 10 ^ 5

m = 10 ^ 9 + 7

但是这里的m值为1009。因此,使用卢卡斯定理,我们只需要计算1009 * 1009 aCb的不同值,其中a,b <= 1009

如何在上述限制下做到这一点。在给定约束下,我无法制作O(m * k)空间复杂度的数组。

救命!


阅读 245

收藏
2020-07-28

共1个答案

一尘不染

只需使用以下事实

(n, k) = n! / k! / (n - k)! = n*(n-1)*...*(n-k+1)/[k*(k-1)*...*1]

所以你实际上只有2*k=2*10^5因素。对于数字的倒数,因为您是素数,所以可以使用 kfx的 建议m

2020-07-28