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:
- 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}}
- Cuente el número de árboles ternarios completos con n Nodes internos.
- 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 :
- 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)