Dada uma lista de números inteiros positivos, encontre o número de triângulos que podemos formar, de modo que seus comprimentos laterais sejam representados por três entradas distintas da lista de entrada.
(A inspiração vem do CR .)
Detalhes
- Um triângulo pode ser formado se todas as permutações dos três comprimentos laterais satisfizerem a desigualdade estrita do triângulo(Isso significa que , e devem ser mantidos.)a + b > c . a + b > c a + c > b b + c > a
- Os três comprimentos laterais devem aparecer em posições distintas da lista, mas não precisam necessariamente ser distintos aos pares.
- A ordem dos três números na lista de entrada não importa. Se considerarmos uma lista
a
e os três númerosa[i], a[j], a[k]
(em quei,j,k
os pares são diferentes),(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
etc. todos serão considerados como o mesmo triângulo. - Pode-se presumir que a lista de entrada contenha pelo menos três entradas.
- Você pode assumir que a lista de entrada está classificada em ordem crescente.
Exemplos
Um pequeno programa de teste pode ser encontrado aqui em Experimente online!
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 a entrada [1,2,3,...,n-1,n]
deste é A002623 .
Para a entrada de [1,1,...,1]
(comprimento n
), isso é A000292 .
Para a entrada dos primeiros n
números de Fibonacci ( A000045 ), é A000004 .
[1,1,1,1]
permite que 4 triângulos "diferentes"[1,1,1]
sejam escolhidos usando três dos 1s ? Mas não é 24 porque os três 1s são escolhidos sem ordem, ou seja, é um subconjunto de três índices em vez de uma lista ordenada?