Calculates the multinomial coefficient with the given arguments.

View versions (1)

Interface

#include <codecogs/maths/combinatorics/arithmetic/multinomial_gamma.h>

using namespace Maths::Combinatorics::Arithmetic;

This function calculates the multinomial coefficient with the given arguments k_1, k_2, \ldots k_n given by

(k_1, k_2, \ldots k_n)! =
\frac{(k_1 + k_2 + \ldots + k_n)!}{k_1! k_2! \ldots k_n!}
(1)

Large values of the factors may be given without the fear that computer overflow would occur during intermediate calculations. This is possible with the use of the logarithm of the Gamma function.

References

SUBSET, a C++ library of combinatorial routines, http://www.csit.fsu.edu/~burkardt/cpp_src/subset/subset.html

Example 1

#include <codecogs/maths/combinatorics/arithmetic/multinomial_gamma.h>
#include <iostream>
int main()
{
  int factors[4] = {1, 2, 5, 3};
  std::cout << "In the case of the following factors" << std::endl;
  for (int i = 0; i < 4; i++)
    std::cout << factors[i] << "  ";
  std::cout << std::endl << "the multinomial coefficient is" << std::endl;
  std::cout << Maths::Combinatorics::Arithmetic::multinomial_gamma(4, factors) << std::endl;
  return 0;
}

Output:

In the case of the following factors
1  2  5  3
the multinomial coefficient is
27720

Parameters

n
the number of arguments
factors
the factors of the multinomial, given as an array

Returns

the multinomial coefficient based on the values of the factors
GPL Licence — free for non commercial use. See Licence details.