Si los dados son todas blancas y arrojó sobre una mesa, el orden no importa. Por la lista, me parece que hay sólo 18 maneras en que los cinco dados pueden añadir a las 20:
[1, 1, 6, 6, 6]
[1, 2, 5, 6, 6]
[1, 3, 4, 6, 6]
[1, 3, 5, 5, 6]
[1, 4, 4, 5, 6]
[1, 4, 5, 5, 5]
[2, 2, 4, 6, 6]
[2, 2, 5, 5, 6]
[2, 3, 3, 6, 6]
[2, 3, 4, 5, 6]
[2, 3, 5, 5, 5]
[2, 4, 4, 4, 6]
[2, 4, 4, 5, 5]
[3, 3, 3, 5, 6]
[3, 3, 4, 4, 6]
[3, 3, 4, 5, 5]
[3, 4, 4, 4, 5]
[4, 4, 4, 4, 4]
Sin embargo, si los dados están alineados para que el pedido se considera como una parte importante de la cuestión, entonces usted puede tomar el 18 elementos y ampliar, desde allí, al igual que lo hice en el siguiente Python (lenguaje de programación) de secuencia de comandos. Tenga en cuenta que, en Python, ans += x simplemente causará x para ser añadido a la ans.
from math import factorial as fac
f = fac(5) # `fac` denotes `factorial`
ans = 0 # `ans` denotes `answer`
ans += f/(fac( 2)*fac( 3)) # [1, 1, 6, 6, 6]
ans += f/(fac( 2)) # [1, 2, 5, 6, 6]
ans += f/(fac( 2)) # [1, 3, 4, 6, 6]
ans += f/(fac( 2)) # [1, 3, 5, 5, 6]
ans += f/(fac( 2)) # [1, 4, 4, 5, 6]
ans += f/(fac( 3)) # [1, 4, 5, 5, 5]
ans += f/(fac( 2)*fac( 2)) # [2, 2, 4, 6, 6]
ans += f/(fac( 2)*fac( 2)) # [2, 2, 5, 5, 6]
ans += f/(fac( 2)*fac( 2)) # [2, 3, 3, 6, 6]
ans += f # [2, 3, 4, 5, 6]
ans += f/(fac( 3)) # [2, 3, 5, 5, 5]
ans += f/(fac( 3)) # [2, 4, 4, 4, 6]
ans += f/(fac( 2)*fac( 2)) # [2, 4, 4, 5, 5]
ans += f/(fac( 3)) # [3, 3, 3, 5, 6]
ans += f/(fac( 2)*fac( 2)) # [3, 3, 4, 4, 6]
ans += f/(fac( 2)*fac( 2)) # [3, 3, 4, 5, 5]
ans += f/(fac( 3)) # [3, 4, 4, 4, 5]
ans += f/(fac( 5)) # [4, 4, 4, 4, 4]
print ans
La respuesta impreso es de 651. Mi enfoque es similar al de Juan arriba.
Finalmente, como sospecho que Juan sabe, si cada uno de los dados es de un color diferente, entonces hay 651*5! distintas formas en que dados los arreglos pueden agregar hasta 20.