组合模数

时间:2017-08-21 18:23:53

标签: java combinatorics modulus

假设数n,我们必须找到n的所有组合的总和,即nC0 + nC1 + nC2 + ... + nCn。 结果可能很大,所以最终答案应该是和%D(D = 10 ^ 9 + 7)。

我使用的方法是 -

long sum=0;
long combination=1;
for(int i=1;i<=n;i++){
   combination=((combination*(n-i+1))/i)%D;
   sum=(sum+combination)%D;
}

但这不起作用。

Real Problem statementcode。代码输出正确,直到n = 20.

1 个答案:

答案 0 :(得分:0)

你应该修改最终输出,而不是沿途的每一步 数字也变得非常大,所以使用BigInteger而不是long。

这是我的解决方案
http://ide.geeksforgeeks.org/Ew3Epn

使用公式(2 * n)!/(n!)^ 2
在这里找到 - &gt; https://oeis.org/A000984