Calcular nCr = n!/(r!(n-r)!)
En este paso, implementarás una función para calcular el factorial y las combinaciones utilizando la fórmula nCr = n! / (r! * (n-r)!).
Abre el archivo combinations.c anterior y actualízalo con las funciones de cálculo de factorial y combinaciones:
cd ~/project
nano combinations.c
Agrega el siguiente código para implementar los cálculos de factorial y combinaciones:
#include <stdio.h>
// Función para calcular el factorial
unsigned long long factorial(int num) {
if (num == 0 || num == 1) {
return 1;
}
unsigned long long result = 1;
for (int i = 2; i <= num; i++) {
result *= i;
}
return result;
}
// Función para calcular combinaciones (nCr)
unsigned long long combinations(int n, int r) {
// Validar la entrada
if (r > n) {
return 0;
}
// Usar la fórmula de combinaciones: nCr = n! / (r! * (n-r)!)
unsigned long long numerador = factorial(n);
unsigned long long denominador = factorial(r) * factorial(n - r);
return numerador / denominador;
}
int main() {
int n, r;
// Solicitar al usuario que ingrese los valores de n y r
printf("Ingrese el valor de n: ");
scanf("%d", &n);
printf("Ingrese el valor de r: ");
scanf("%d", &r);
// Calcular e imprimir la combinación
unsigned long long resultado = combinations(n, r);
printf("Combinación C(%d, %d) = %llu\n", n, r, resultado);
return 0;
}
Compila y ejecuta el programa:
gcc combinations.c -o combinations
./combinations
Salida de ejemplo:
Ingrese el valor de n: 5
Ingrese el valor de r: 3
Combinación C(5, 3) = 10
Puntos clave de esta implementación:
- La función
factorial() calcula el factorial de un número dado.
- La función
combinations() implementa la fórmula de combinaciones.
- Utiliza
unsigned long long para manejar cálculos de factorial más grandes.
- Valida la entrada para evitar combinaciones inválidas.