如何找到固定n的前r个二项式系数之和?

时间:2016-06-08 09:28:07

标签: c algorithm time-complexity combinations binomial-coefficients

我已经尝试过解决这个系列的基本方法,但n&amp;的较大值需要时间。 r。有没有办法在单个表达式中减少此表达式,其时间复杂度不依赖于n OR r的值。范围r,n <= 10 ^ 5

注意:此处r < n即我必须找到此系列的第一个r+1条款的总和。

我已经阅读过这个问题,但它并没有帮助我:

Algorithm to find Sum of the first r binomial coefficients for fixed n modulo m

2 个答案:

答案 0 :(得分:1)

AFAIK,没有这样的表达可以减少它。但它可以在O(r)时间复杂度中完成如下。

考虑一个数组A,其中A [i]存储 n c i 。然后我们可以轻松验证A [i] = A [i-1]。(n-i + 1)/(i)

所以

A[0] = 1;
for(int i=1;i<=r;i++){
    A[i] = A[i-1].(n-i+1)/(i);
}
int ans = 0; //The required answer
for(int i=0;i<=r;i++){
    ans = ans+A[i];
}

答案 1 :(得分:1)

对于大N,二项式系数的行为类似于高斯曲线(至少对于最中心的值)。这可以从斯特林公式推导出来,并受中心极限定理的支持。

然后可以通过误差函数来近似部分和。