java - 如何找到n选择r而不溢出

标签 java overflow

我需要找到n Choose r的值——从n中选择r个对象的方法数。

如果我先找到分子,然后找到分母。我遇到了异常。

我正在使用java。

如何做到这一点,例如 44 选择 42

最佳答案

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

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

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

  • 将提名者的两个数字相乘
  • 除以 2
  • 乘以提名人的第三个数字
  • 除以 3
  • ...
  • 乘以提名者的最后一个数字
  • 除以R

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

关于java - 如何找到n选择r而不溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889792/

相关文章:

java - 如何为处理其他异常时抛出的异常获取正确链接的堆栈跟踪?

java - 如何使用 itext7 Java 将多个图像添加到 PDF 中?

Java 对象赋值

html - 用于深层嵌套 div 的 CSS overflow-y

Java 类引用

c - 如何用环绕或溢出减去两个无符号整数

html - CSS:让 "overflow: hidden"隐藏顶部而不是底部?

c - 运行时如何检测缓冲区溢出?

c# - LINQ to SQL 转换溢出

java - 如何将 Gradle 分发插件与 Kotlin 多平台结合使用