·
·
¡Hola Santiago!
En efecto, todas las formas de sumar 19 con 6 números enteros no negativos son las combinaciones con repetición de 6 tomadas de 19 en 19
CR(6,19) = C (6+19-1, 19) = C(24,19) = C(24,5) =
24·23·22·21·20 / (5·4·3·2·1) = 42504.
Pero ahora debemos quitar aquellas combinaciones en las que alguno de los seis números es mayor de 9, ya que esa combinación no se corresponderá con un número de seis o menos cifras escrito en base 10.
Al sumar 19 solo se puede dar el caso de que haya uno mayor de 9, si fueran dos ya sumarían 20 y de esos no tenemos ninguno.
Como calcular cuántas combinaciones de estas hay. Muy sencillo, si al número mayor de 9 le restamos 10 tendremos todas la cifras menores o iguales a 9 y su suma ya no será 19 sino 9
Supongamos que el número mayor de 9 era el primero x1
x1 + x2 + x3 + x4+ x5 + x6 = 19
tenemos x1 = x1' + 10
restando 10 en los dos lados quedará
x1' + x2 + x3 + x4 + x5 + x6 = 9
Y la cantidad de soluciones de esta ecución es
CR(6,9) = C(6+9-1, 9) = C(14, 9)= C(14,5) =
14·13·12·11·10 / (5·4·3·2·1) = 2002
Pero igual que hemos supuesto que el número mayor era el primero, puede ser el segundo, tercero, ... hasta el sexto.
Por lo tanto las combinaciones inválidas son
6·2002 = 12012
Y las combinaciones buenas son:
42504 - 12012 = 30492
------------
He comprobado que está bien con este torpe pero fácil programa en VisualStudio C++
·
#include "stdafx.h"
int main()
{
int i, j, k, l, m, n, c;
c = 0;
for (i = 0;i < 10;i++)
for (j = 0;j < 10;j++)
for (k = 0;k < 10;k++)
for (l = 0;l < 10;l++)
for (m = 0;m < 10;m++)
for (n = 0;n < 10;n++)
if (i + j + k + l + m + n == 19) c = c + 1;
printf("%d", c);
getchar();
return 0;
}
Saludos.
:
: