组合数算法,紫书P64

来源:互联网 发布:象牙社区一样的软件 编辑:程序博客网 时间:2024/04/29 11:43

Cnm(n在下m在上)== n!/m!*(n-m)!;

单纯暴力求解会导致中间结果溢出,所以一定要在计算过程中约分。

long long C(int n, int m){    if (m < n-m) m = n-m;    long long ans = 1;    for (int i = m+1; i <= n; i++) ans *= i;    for (int i = 1; i <= n-m; i++) ans /= i;    return ans;