Давши список натуральних чисел, знайдіть кількість трикутників, які ми можемо сформувати так, щоб їх бічні довжини були представлені трьома різними записами вхідного списку.
(Натхнення надходить від 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" обрані не упорядкованими, тобто це підмножина з трьох індексів, а не упорядкований список?