首页 > 解决方案 > 在 C++ 中是否有计算 nCr 的内置函数?

问题描述

在 python 3.8 中,有一个用于计算组合数量的内置函数(nCr(n, k)):

>>>from math import comb
>>>comb(10,3)
120

C++中有这样的功能吗?

标签: c++python-3.xc++17built-in

解决方案


数学库中的beta函数可用于表示二项式系数(又名 nCr)。

double binom(int n, int k) {
    return 1/((n+1)*std::beta(n-k+1,k+1));
}

资源。

此函数可用于 C++17 或作为 C++ (ISO/IEC 29124:2010) 数学特殊函数扩展实现的一部分。在后一种情况下,您的实现可能需要您#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1在包含<cmath>该函数可用的标头之前。

请注意,与 Python 不同,C++ 没有对大整数的内置支持,因此首先使用浮点运算可能是一个不错的选择。


推荐阅读