Давши список натуральних чисел, знайдіть кількість трикутників, які ми можемо сформувати так, щоб їх бічні довжини були представлені трьома різними записами вхідного списку.
(Натхнення надходить від CR .)
Деталі
- Трикутник можна утворити, якщо всі перестановки трьох бічних довжин задовольняють суворій нерівності трикутника(Це означає, що , і мають утримувати всі.)
- Три сторони довжини повинні міститись у різних положеннях у списку, але не обов'язково повинні бути розрізненими попарно.
- Порядок трьох чисел у вхідному списку значення не має. Якщо ми розглянемо список
a
і три числаa[i], a[j], a[k]
(деi,j,k
попарно різні), то(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
і т. Д. Всі вважаються одним і тим же трикутником. - Можна вважати, що список вхідних даних містить щонайменше 3 записи.
- Можна припустити, що вхідний список сортується у порядку зростання.
Приклади
Невелику програму тестування можна знайти тут на « Спробуйте онлайн»!
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
Для [1,2,3,...,n-1,n]
цього є A002623 .
Для вводу [1,1,...,1]
(довжини n
) це A000292 .
Для введення перших n
чисел Фібоначчі ( A000045 ) це A000004 .
[1,1,1,1]
дозволяє вибрати 4 "різні" трикутники,[1,1,1]
використовуючи будь-які три з 1-х? Але це не 24, тому що три "1" обрані не упорядкованими, тобто це підмножина з трьох індексів, а не упорядкований список?