跳到主内容
UniKit

排列组合计算

精确计算组合数 C(n,k) 与排列数 P(n,r):支持大数 BigInt 精确值、对数近似防溢出、杨辉三角、二项式展开系数、可重复组合与多组选取(多项式系数)。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

组合数 C(n, k)120
C(n, k) 的十进制位数3
ln C(n, k)(对数近似)4.787492
排列数 P(n, k)720
可重复组合 C(n + k − 1, k)220
多项式系数30
杨辉三角(前 n 行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
二项式展开 (a + b)^n
a^10 + 10a^9b + 45a^8b^2 + 120a^7b^3 + 210a^6b^4 + 252a^5b^5 + 210a^4b^6 + 120a^3b^7 + 45a^2b^8 + 10ab^9 + b^10

这个工具能做什么

  • 算彩票、抽奖的中奖概率:C(52,5) 这种大组合数也能给出精确整数,不会因为浮点误差变成近似值。
  • 做统计与概率作业:一次拿到 C(n,k)、P(n,k)、可重复组合与多项式系数,省去逐个手算。
  • 核对二项式展开:把 (a + b)^n 的系数按杨辉三角逐项列出,方便与课本答案对照。
  • 需要估算超大组合数时看对数与位数:n 上万以后精确值没有意义,量级才是关键。

示例

输入

n = 10,k = 3,分组 2,2,1

输出

C(10, 3) = 120,P(10, 3) = 720,可重复组合 C(12, 3) = 220,ln C(10, 3) ≈ 4.787492,位数 3,多项式系数 5!/(2!·2!·1!) = 30

杨辉三角按 n 行显示(最多 20 行),二项式展开在 n ≤ 20 时给出。

常见问题

C(n, k) 和 P(n, k) 有什么区别?

组合只看选出了哪些,排列还看顺序。P(n, k) = C(n, k) × k!,所以从 10 个人里选 3 个是 C(10,3)=120 种,让他们排成一队则是 P(10,3)=720 种。

n 很大时结果还准吗?

n 不超过 2000 时是逐位精确的 BigInt 整数,可以放心复制。超过之后组合数的位数会到几千位,工具改为给出 ln C(n,k) 与十进制位数,这些数字仍然可靠,但不会给出完整整数。

k 大于 n 会怎样?

按组合数学的惯例返回 0,而不是报错:从 n 个物品里选不出 k 个。对数形式则显示为 −∞。

可重复组合与多项式系数分别用在什么场景?

可重复组合 C(n+k−1, k) 用于「允许重复地选」的情形,比如从 3 种口味里买 2 个冰淇淋球(6 种)。多项式系数用于把一组互不相同的物品分成若干指定大小的组,例如把 5 个人分成 2、2、1 三组有 30 种分法。

杨辉三角为什么和组合数一致?

因为 C(n, k) = C(n−1, k−1) + C(n−1, k) 正是杨辉三角的递推式:每个数等于它上方两个数之和。工具里的单测会逐项对比两种算法,确保完全一致。

关键词:combinationpermutationnCrnPrbinomial coefficientpascal trianglemultinomial组合数排列数杨辉三角二项式展开多项式系数可重复组合

同类工具