Dato un elenco di numeri interi positivi, trova il numero di triangoli che possiamo formare in modo tale che le loro lunghezze laterali siano rappresentate da tre voci distinte dell'elenco di input.
(L'ispirazione viene da CR .)
Dettagli
- Un triangolo può essere formato se tutte le permutazioni delle tre lunghezze laterali soddisfano la rigida disuguaglianza del triangolo(Ciò significa che , e b + c > a devono essere tutti validi).
- Le tre lunghezze laterali devono apparire in posizioni distinte nell'elenco, ma non devono necessariamente essere distinte in modo accoppiato.
- L'ordine dei tre numeri nell'elenco di input non ha importanza. Se consideriamo un elenco
a
e i tre numeria[i], a[j], a[k]
(dovei,j,k
sono accoppiati in modo diverso), allora(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
ecc. Vengono considerati tutti come lo stesso triangolo. - Si presume che l'elenco di input contenga almeno 3 voci.
- Si può presumere che l'elenco di input sia ordinato in ordine crescente.
Esempi
Un piccolo programma di test è disponibile qui su Provalo 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
Per l'input di [1,2,3,...,n-1,n]
questo è A002623 .
Per l'ingresso di [1,1,...,1]
(lunghezza n
) questo è A000292 .
Per l'immissione dei primi n
numeri di Fibonacci ( A000045 ) questo è A000004 .
[1,1,1,1]
4 triangoli "diversi",[1,1,1]
usando tre dei 1? Ma non sono 24 perché i tre 1 sono scelti non ordinati, ovvero è un sottoinsieme di tre indici anziché un elenco ordinato?