Dada una lista de enteros positivos, encuentre el número de triángulos que podemos formar de modo que sus longitudes laterales estén representadas por tres entradas distintas de la lista de entrada.
(La inspiración viene de CR .)
Detalles
- Se puede formar un triángulo si todas las permutaciones de las tres longitudes laterales satisfacen la estricta desigualdad del triángulo(Esto significa que , y deben mantenerse).a + b > c . a + b > c a + c > b b + c > a
- Las tres longitudes laterales deben aparecer en posiciones distintas en la lista, pero no necesariamente tienen que ser distintas por pares.
- El orden de los tres números en la lista de entrada no importa. Si consideramos una lista
a
y los tres númerosa[i], a[j], a[k]
(dondei,j,k
son diferentes por pares), entonces(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
todos se consideran como el mismo triángulo. - Se puede suponer que la lista de entrada contiene al menos 3 entradas.
- Puede suponer que la lista de entrada está ordenada en orden ascendente.
Ejemplos
Puede encontrar un pequeño programa de prueba aquí en ¡ Pruébelo en línea!
Input, Output:
[1,2,3] 0
[1,1,1] 1
[1,1,1,1] 4
[1,2,3,4] 1
[3,4,5,7] 3
[1,42,69,666,1000000] 0
[12,23,34,45,56,67,78,89] 34
[1,2,3,4,5,6,7,8,9,10] 50
Para la entrada de [1,2,3,...,n-1,n]
esto es A002623 .
Para la entrada de [1,1,...,1]
(longitud n
) este es A000292 .
Para la entrada de los primeros n
números de Fibonacci ( A000045 ) este es A000004 .
[1,1,1,1]
4 triángulos "diferentes", todos[1,1,1]
, utilizando cualquiera de los tres. Pero, ¿no es 24 porque los tres 1 se eligen sin orden, es decir, es un subconjunto de tres índices en lugar de una lista ordenada?