Programa para nth Fuss–Número Catalán

Los números catalanes de Fuss son una generalización de los números catalanes que usan trillizos en lugar de pares .
 

Los Números Fuss-Catalan se pueden representar mediante una Serie con la fórmula: 

Los primeros números de Fuss–Catalan son 
 

1, 1, 3, 12, 55, 273, 1428, 7752, 43263, 246675………..
para n = 0, 1, 2, 3, … respectivamente

Aplicaciones de Fuss-Número Catalán: 
 

  1. Cuente la cantidad de formas de colocar paréntesis entre 2n+1 números que se agruparán de tres en tres.
    Ejemplo: hay 3 formas de poner entre paréntesis {1, 2, 3, 4, 5} como trillizos: 
    {{1, 2, 3}, 4, 5}, {1, {2, 3, 4}, 5}, {1, 2, {3, 4, 5}}
     
  2. Cuente el número de árboles ternarios completos con n Nodes internos. 
     

  1.  
  2. Cuente el número de caminos de longitud 3n a través de una cuadrícula de 2n por n que no se cruza por encima de la diagonal principal
    Ejemplo: Hay 3 caminos de (0, 0) a (4, 2) que no se cruzan por encima de la diagonal : 
     

  1.  
  2. y muchos más. Consulte este enlace para obtener más aplicaciones.

Implementación del número Fuss-Catalan:
 

C++

// C++ program for nth Fuss–Catalan Number
 
#include <iostream>
using namespace std;
 
// Returns value of Binomial Coefficient C(n, k)
unsigned long int binomialCoeff(unsigned int n,
                                unsigned int k)
{
    unsigned long int res = 1;
 
    // Since C(n, k) = C(n, n-k)
    if (k > n - k)
        k = n - k;
 
    // Calculate value of
    //[n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]
    for (int i = 0; i < k; ++i) {
        res *= (n - i);
        res /= (i + 1);
    }
 
    return res;
}
 
// A Binomial coefficient based function
// to find nth Fuss–Catalan number in O(n) time
unsigned long int Fuss_catalan(unsigned int n)
{
    // Calculate value of 3nCn
    unsigned long int c = binomialCoeff(3 * n, n);
 
    // return 3nCn/(2n+1)
    return c / (2 * n + 1);
}
 
// Driver code
int main()
{
    for (int i = 0; i < 10; i++)
        cout << Fuss_catalan(i) << " ";
    return 0;
}

Java

// Java program for nth Fuss-Catalan Number
class GFG
{
 
// Returns value of Binomial Coefficient C(n, k)
static int binomialCoeff(int n, int k)
{
    int res = 1;
 
    // Since C(n, k) = C(n, n-k)
    if (k > n - k)
        k = n - k;
 
    // Calculate value of
    //[n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]
    for (int i = 0; i < k; ++i)
    {
        res *= (n - i);
        res /= (i + 1);
    }
    return res;
}
 
// A Binomial coefficient based function
// to find nth Fuss-Catalan number in O(n) time
static int Fuss_catalan(int n)
{
    // Calculate value of 3nCn
    int c = binomialCoeff(3 * n, n);
 
    // return 3nCn/(2n+1)
    return c / (2 * n + 1);
}
 
// Driver code
public static void main(String []args)
{
    for (int i = 0; i < 10; i++)
        System.out.print(Fuss_catalan(i) + " ");
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program for nth Fuss–Catalan Number
 
# Returns value of Binomial Coefficient C(n, k)
def binomialCoeff(n, k) :
 
    res = 1;
 
    # Since C(n, k) = C(n, n-k)
    if (k > n - k) :
        k = n - k;
 
    # Calculate value of
    # [n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]
    for i in range(k) :
         
        res *= (n - i);
        res //= (i + 1);
 
    return res;
 
# A Binomial coefficient based function
# to find nth Fuss–Catalan number in O(n) time
def Fuss_catalan(n) :
 
    # Calculate value of 3nCn
    c = binomialCoeff(3 * n, n);
     
    # return 3nCn/(2n+1)
    return c // (2 * n + 1);
 
# Driver code
if __name__ == "__main__" :
 
    for i in range(10) :
        print(Fuss_catalan(i), end = " ");
 
# This code is contributed by AnkitRai01

C#

// C# program for nth Fuss-Catalan Number
using System;
 
class GFG
{
 
// Returns value of Binomial Coefficient C(n, k)
static int binomialCoeff(int n, int k)
{
    int res = 1;
 
    // Since C(n, k) = C(n, n-k)
    if (k > n - k)
        k = n - k;
 
    // Calculate value of
    //[n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]
    for (int i = 0; i < k; ++i)
    {
        res *= (n - i);
        res /= (i + 1);
    }
    return res;
}
 
// A Binomial coefficient based function
// to find nth Fuss-Catalan number in O(n) time
static int Fuss_catalan(int n)
{
    // Calculate value of 3nCn
    int c = binomialCoeff(3 * n, n);
 
    // return 3nCn/(2n+1)
    return c / (2 * n + 1);
}
 
// Driver code
public static void Main(String []args)
{
    for (int i = 0; i < 10; i++)
        Console.Write(Fuss_catalan(i) + " ");
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
 
// Javascript program for nth Fuss–Catalan Number
 
// Returns value of Binomial Coefficient C(n, k)
function binomialCoeff(n, k)
{
    var res = 1;
 
    // Since C(n, k) = C(n, n-k)
    if (k > n - k)
        k = n - k;
 
    // Calculate value of
    //[n*(n-1)*---*(n-k+1)] / [k*(k-1)*---*1]
    for (var i = 0; i < k; ++i) {
        res *= (n - i);
        res = parseInt(res / (i + 1));
    }
 
    return res;
}
 
// A Binomial coefficient based function
// to find nth Fuss–Catalan number in O(n) time
function Fuss_catalan(n)
{
    // Calculate value of 3nCn
    var c = binomialCoeff(3 * n, n);
 
    // return 3nCn/(2n+1)
    return parseInt(c / (2 * n + 1));
}
 
// Driver code
for (var i = 0; i < 10; i++)
    document.write(Fuss_catalan(i)+ " ");
 
</script>
Producción: 

1 1 3 12 55 273 1428 7752 43263 246675

 

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *