You are on page 1of 2

Coeficientes binomiales

El coeficiente binomial o numero combinatorio nk es el numero de modos en los que se puede




escoger k objectos de un total de n. Su formula es bien conocida,


 
n n!
=
k k!(n k)!

donde n! = n (n 1)(n 2) 321, pero no es demasiado practica desde un punto de vista


computacional, puesto que se tiene que trabajar con numeros muy grandes (los factoriales)
para acabar obteniendo un resultado mucho mas pequeno. Por ejemplo,
 
20 20! 2432902008176640000
= = = 184756,
10 10!10! 1316819440000

donde se puede ver que, pese a que el numero final solo tiene 6 cifras, nos ha hecho falta
calcular 20!, que tiene 19. Esto es un problema, puesto que el tipo int de 32 bits que suele
usarse en la mayora de lenguajes de programacion no puede almacenar numeros de mas de
10 cifras.
Este, sin embargo, no es el unico modo de calcular el numero nk , puesto que los numeros


combinatorios satisfacen la siguiente propiedad:


 
n
=1 si k es 0 o n,
k
     
n n1 n1
= + si 0 < k < n.
k k1 k

Esta formula recursiva permite calcular los numeros combinatorios sin multiplicar ni divi-
dir, mediante un procedimiento visual conocido hoy en da como Triangulo de Pascal o
Triangulo de Tartaglia, pero del cual hay referencias historicas con mas de 1000 anos de
antiguedad:
0

1 0
1 1
 
1 1 0 1
2 2 2
  
1 2 1 0 1 2
3 3 3 3
   
1 3 3 1 0 1 2 3
1 4 6 1 1 4 4 4 4 4
    
0 1 2 3 4
... ...

Para calcular los siguientes numeros combinatorios solo hay que ir llenando las filas del
n
triangulo. Usa esta idea para calcular el valor de los numeros combinatorios k donde n 30
y 0 k n.

Entrada
La entrada consiste en una secuencia de lneas, cada una de las cuales contiene 2 numeros
naturales n y k, donde 0 n 30 y 0 k n.

Salida
Para cada lnea de la entrada tu programa debe escribir una lnea con el valor del numero
combinatorio nk correspondiente.
Ejemplo de entrada 1 Ejemplo de salida 1
0 0 1
1 0 1
1 1 1
2 0 1
2 1 2
2 2 1

Ejemplo de entrada 2 Ejemplo de salida 2


20 10 184756
30 15 155117520
30 10 30045015
30 20 30045015
30 0 1
30 30 1

You might also like