Це подальше підрахунок масивів, які створюють унікальні набори . Суттєвою відмінністю є визначення унікальності.
Розглянемо масив A
довжини n
. Масив містить лише додатні цілі числа. Наприклад A = (1,1,2,2)
. Давайте визначимо f(A)
як сукупність сум усіх непустих суміжних підмагістралей A
. У цьому випадку f(A) = {1,2,3,4,5,6}
. Етапи для створення f(A)
наступні:
Підматриці A
є (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
. Їх відповідні суми є 1,1,2,2,2,3,4,4,5,6
. Отже, набір, який ви отримуєте з цього списку, є {1,2,3,4,5,6}
.
Ми називаємо масив A
унікальним, якщо немає іншого масиву B
такої ж довжини, який f(A) = f(B)
, за винятком масиву, A
оберненого назад. Як приклад, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
але не існує іншого масиву довжини, 3
який б створював той самий набір сум.
Завдання
Завдання, для даного n
і s
є підрахунок кількості унікальних масивів цієї довжини. Ви можете припустити, що s
це між 1
і 9
. Вам потрібно лише порахувати масиви, де елементи є або заданим цілим числом, s
або s+1
. Наприклад, якщо s=1
масиви, які ви рахуєте, містять лише 1
та 2
. Однак визначення унікальності є стосовно будь-якого іншого масиву такої ж довжини. Оскільки конкретний приклад не[1, 2, 2, 2]
є унікальним, оскільки він дає той самий набір сум, що і .[1, 1, 2, 3]
Ви повинні рахувати зворотній бік масиву, а також сам масив (до тих пір, поки масив звичайно не є паліндром).
Приклади
s = 1
, відповіді на n = 2,3,4,5,6,7,8,9 такі:
4, 3, 3, 4, 4, 5, 5, 6
Бо s = 1
унікальні масиви довжиною 4 є
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2
, відповіді на n = 2,3,4,5,6,7,8,9 такі:
4, 8, 16, 32, 46, 69, 121, 177
Приклад масиву, який не є унікальним, s = 2
є:
(3, 2, 2, 3, 3, 3).
Він має той самий набір сум, що і обидва: (3, 2, 2, 2, 4, 3)
і (3, 2, 2, 4, 2, 3)
.
s = 8
, відповіді на n = 2,3,4,5,6,7,8,9 такі:
4, 8, 16, 32, 64, 120, 244, 472
Оцінка
Для даного n
коду слід вивести відповідь на всі значення від s
з 1
до 9
. Ваш бал - це найвище значення, n
за яке це завершується за одну хвилину.
Тестування
Мені потрібно запустити ваш код на моїй машині ubuntu, тому, будь ласка, включіть якомога детальніші інструкції щодо того, як компілювати та запускати ваш код.
Таблиця лідерів
- n = 13 Крістіан Сіверс в Хаскеллі (42 секунди)
s
? Що він представляє?