如何找到n选择r没有溢出

时间:2010-05-22 21:14:31

标签: java overflow

我需要找到n的值选择r-从n中选择r个对象的方式的数量。

如果我首先找到分子,那么分母。我得到一个例外。

我正在使用java。

如何做到例如44选择42

1 个答案:

答案 0 :(得分:3)

您可以使用NcR等于Nc(N-R)的事实。公式是:

 N * (N - 1) * ... * (N - R + 1)
---------------------------------
         1 * 2 * ... * R

您可以观察到K个连续数字的乘积始终可以被K整除。所以,循环看起来像

  • 从nominator中加两个数字
  • 除以2
  • 乘以nominator中的第3个数字
  • 除以3
  • ...
  • 乘以来自提名者的最后一个数字
  • 除以R

或者,只需使用java.math.BigInteger