PERMUTATION

排列组合,大整数精确算。

选好模式、填 n 与 m,立刻得到结果:排列 A(n,m) 是「先排再选」,组合 C(n,m) 是「只选不排」,另有阶乘 n!、可重复排列 n^m 与可重复组合 C(n+m−1, m)。所有结果用大整数精确计算,20! 以后也不会出现被截断的近似值。

—

—

本页处理在浏览器本地完成

怎么用?

先选模式:排列 A(n,m) 用于「排队、领奖、密码」等顺序不同就算不同结果的场景;组合 C(n,m) 用于「选代表、抽彩票选号」等顺序无关的场景;阶乘用于排列总数 n!;可重复排列与可重复组合用于「取球可重复」「分苹果到若干箱子且允许空箱」这类题。填入 n 与 m 后点计算,解析会说明公式怎么来的。所有结果都用大整数算,20! 以后也是精确值。

常见问题

排列和组合到底怎么区分?

一句话:顺序不同算不同结果就是排列,顺序不同算同一个就是组合。「1 号班和 2 号班分别派一人」是排列(谁在哪个班有区别),而「从 5 人里选 2 人当代表」是组合(选出这两个人即可,不排序)。

A(n,m) 和 C(n,m) 差在哪?

差一个 m!:A(n,m) = n!/(n−m)!,C(n,m) = n!/[m!(n−m)!],即 A(n,m) = C(n,m) × m!。原因是从 m 个人里选出并排好顺序的方案数,比只选出这一组人多出「组内怎么排」的 m! 种。

可重复组合为什么要隔板法?

把 m 个相同的东西分到 k 个盒子里、允许空盒,等价于在 m 个球与 k−1 个隔板之间选位置排成一排,方案数是 C(m+k−1, k−1)(等价于 C(m+k−1, m))。隔板法只能处理「相同物品分到不同容器」的情况——若物品或容器有区别,就要改用别的模型。

数据会上传吗?

不会。所有计算与出题都在浏览器本地完成,不发送任何网络请求。

深入阅读

觉得好用?Found it useful?