Biorąc pod uwagę listę dodatnich liczb całkowitych, znajdź liczbę trójkątów, które możemy utworzyć, tak aby ich długości boków były reprezentowane przez trzy różne wpisy na liście wejściowej.
(Inspiracja pochodzi z CR .)
Detale
- Trójkąt można utworzyć, jeśli wszystkie kombinacje trzech długości boków spełniają ścisłą nierówność trójkąta(Oznacza to, że , oraz muszą być wszystkie.)
- Trzy długości boków muszą pojawić się w różnych pozycjach na liście, ale niekoniecznie muszą być odrębne parami.
- Kolejność trzech liczb na liście wprowadzania nie ma znaczenia. Jeśli weźmiemy pod uwagę listę
a
i trzy liczbya[i], a[j], a[k]
(gdziei,j,k
pary są różne), to(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
itd. Wszystkie są uważane za ten sam trójkąt. - Zakłada się, że lista wejściowa zawiera co najmniej 3 wpisy.
- Możesz założyć, że lista wejściowa jest posortowana w porządku rosnącym.
Przykłady
Mały program testowy można znaleźć tutaj na Wypróbuj 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
Do wprowadzenia [1,2,3,...,n-1,n]
tego należy A002623 .
Dla wprowadzenia [1,1,...,1]
(długości n
) jest to A000292 .
Dla wprowadzenia pierwszych n
liczb Fibonacciego ( A000045 ) jest to A000004 .
[1,1,1,1]
pozwala na wybranie 4 „różnych” trójkątów[1,1,1]
za pomocą dowolnych trzech 1? Ale to nie 24, ponieważ trzy 1 są wybierane nieuporządkowane, tzn. Jest to podzbiór trzech wskaźników, a nie uporządkowana lista?