Завдання ІІІ (міського) етапу 2017 року

1. Сходові числа

Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 256 MБ
Вхідний файл: numbers.in
Вихідний файл: numbers.out
Програма: numbers.*

Назвімо сходовими числами числа вигляду aaa, де a — натуральне число, що входить у запис щонайменше двічі, а піднесення до степеня здійснюють «згори донизу». Наприклад, числа 33 = 27 та 2222 = 216 = 65 536 є сходовими. Схо­до­вим числом є й одиниця, бо 1 = 11. А от числа 2, 3 і 5 схо­до­ви­ми не є, бо подати їх у потрібному вигляді не­мож­ливо.

Завдання
Установити, скільки натуральних чисел, що не перевищують заданого нату­ра­­ль­­ного числа n, є сходовими.

Вхідні дані
У вхідному файлі записано лише одне натуральне число n ≤ 109.

Вихідні дані
У вихідний файл вивести одне число — кількість сходових чисел у межах від 1 до n включно.

Приклад

numbers.innumbers.out
52

2. Таблиця

Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 256 MБ
Вхідний файл: table.in
Вихідний файл: table.out
Програма: table.*

Задано квадратну таблицю n×n, що складається з натуральних чисел. Роз­гля­да­ти­ме­мо шля­­­хи з лі­­­вої верхньої комірки таблиці у праву нижню, які до­ві­льним чи­ном ідуть ко­мір­ками таблиці праворуч та вниз (але ніколи ліворуч або вгору). Уз­довж кож­ного такого шляху розташовано 2n − 1 число. Якщо для пев­ного шляху даний набір чисел є «симетрич­ним», тобто читається у зворот­но­му порядку так само, як і у прямому, називати­ме­мо вибраний шлях па­лін­дро­міч­ним.

Завдання
За даною таблицею встановіть загальну кількість палін­дро­міч­них шляхів на ній.

Вхідні дані
У першому рядку вхідного файлу вказано розмір таблиці — ціле число n: 2 ≤ n ≤ 100. У наступних n рядках файлу записано по n нату­ра­ль­них чисел, що не перевищують 10 000 та задають таблицю.

Вихідні дані
Вихідний файл повинен містити єдине число: лишок від ділення на 101 кі­ль­кості паліндромічних шляхів на заданій таблиці.

Приклади

table.intable.out
3
7 10 5
5 8 10
8 5 7
4



6
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
50






Коментар: у першому прикладі є 4 паліндромічних шляхи:

У другому прикладі кожен з 252 можливих шляхів є паліндромічним, тож згідно з умовою потрібно вивести лишок від ділення 252 на 101 — число 50.

3. Ламана

Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 256 MБ
Вхідний файл: polyline.in
Вихідний файл: polyline.out
Програма: polyline.*

Завдання
На площині позначено кілька точок. Якщо це можливо, побудуйте замк­не­ну ламану без самоперетинів, що проходить через усі ці точки і не має відмін­них від них вершин.

Вхідні дані
У першому рядку вхідного файлу задано кількість точок n, 3 ≤ n < 2017. У n наступних рядках вказано по дві координати кожної точки: абсцису та ординату відповідно. Повторення точок немає. Всі координати — цілі числа, що за модулем не перевищують 10 000.

Вихідні дані
Якщо побудувати потрібну замкнену ламану неможливо, вивести 0. інакше вивести порядок, у якому задані точки розташовано на ламаній, тобто порядок обходу всіх цих точок, починаючи з довільного місця і в довіль­ному напрямку. Нумерація точок почи­нається з одиниці. Ламаних, що задовольняють умову, може бути кілька. Достат­ньо знайти хоча б одну.

Приклад

polyline.inpolyline.in
7
1 0
-1 -1
1 1
-1 1
0 0
1 -1
0 -1
2 4 3 1 6 5 7







4. Дільники

Максимальна оцінка: 100 балів
Обмеження на час: 0,05 сек.
Обмеження на пам’ять: 32 MБ
Вхідний файл: divisors.in
Вихідний файл: divisors.out
Програма: divisors.*

Завдання
Пер Ґюнт, герой п’єси норвезького письменника Генріка Ібсена, потрапив у полон короля тролів. Щоб визволитися, Пер Ґюнт повинен відповісти на питання: скількома способами дану кількість однакових діамантів можна розділити на одну чи кілька частин таким чином, щоб кількість діамантів у кожній з них була однаковою?

Вхідні дані
Єдиний рядок файлу містить десятковий запис натурального числа n, що містить не більше, ніж 32 цифри й не має багатоцифрових (більше ніж 1 цифра у десятковому записі) простих дільників. В 1/3 тестів це число не перевищує 109, у 2/3 тестів це число не перевищує 1018.

Вихідні дані
Єдиний рядок файлу має містити десятковий запис кількості натуральних дільників числа n з вхідного файлу.

Приклад

divisors.indivisors.out
126

5. Печери

Максимальна оцінка: 100 балів
Обмеження на час: 7 сек.
Обмеження на пам’ять: 128 MБ
Вхідний файл: caves.in
Вихідний файл: caves.out
Програма: caves.*

Пер Ґюнт, герой п’єси норвезького письменника Генріка Ібсена, потрапив у полон короля тролів. Щоб визволитися, Пер Ґюнт повинен перемогти у грі, яку король пропонує своїм бранцям. Правила гри такі:

Завдання
Визначити Nw, pmax, pmin — відповідно кількість різних виграшів, найбільший і найменший виграші.

Вхідні дані
Перший рядок файлу містить десяткові записи натуральних чисел m, l, де m ≤ 60. Кожний з наступних 10 рядків містить по 10 цілих чисел — нулів або одиниць. При 1 ≤ j, k ≤ 10: якщо k-те число (j + 1)-го­ рядка файлу дорівнює 1, то з j-ої­ печери можна потрапити безпосередньо до k-ої печери і навпаки. Інакше це зробити неможливо. Кожний з наступних m рядків містить по 10 невід’ємних цілих чисел. При 1 ≤ jm і 1 ≤ k ≤ 10: k-те число (j + 11)-го рядка — кількість монет, які отримує гравець як винагороду за перебування у j­-ий день у k-ої печері. Останній (m + 12)-ий­ рядок містить у поряд­ку спадання l різних цілих невід’ємних «королів­ських чисел», кожне з яких менше від 264. Останнє число у цьому рядку — нуль.

Вихідні дані
Єдиний рядок файлу має містити десяткові записи трьох чисел: Nw, pmax, pmin. Якщо Nw = 0, то pmax = pmin = 0. Відомо, що pmax < 264, l + Nw ≤ 106.

Приклад

caves.incaves.out
2 2
1 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
1 2 3 0 0 0 0 0 0 0
4 5 6 0 0 0 0 0 0 0
7 0
2 9 5













6. Розкладна послідовність

Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 32 MБ
Вхідний файл: decomp.in
Вихідний файл: decomp.out
Програма: decomp.*

Кожний елемент послідовності a1, a2, ..., an, ... є натуральним числом. Під­послі­довність aj1, aj2, ..., ajn, ... називатимемо траєкторією, якщо для кожного натурального k справджується таке співвідношення: jk+1 = jk + ajk. Послідовність a1, a2, ..., an, ... будемо називати розкладною, якщо її можна розділити на декілька траєкторій.

Завдання
Для періодичної послідовності a1, a2, ..., an, визначити, чи є вона розкладною. Якщо це так, знайти кількість траєкторій, з яких складається задана послідовність.

Вхідні дані
Перший рядок містить натуральне число n (1 ≤ n ≤ 100000) — кількість чисел у періоді послідовності. У наступному рядку через пробіли записано натуральні числа a1, a2, ..., an, які складають один період. Інакше кажучи, послідовність має вигляд a1, a2, ..., an, a1, a2, ..., an, a1, a2, ..., an, ... Усі члени послідовності не перевищують 100 000.

Вихідні дані
Якщо послідовність a1, a2, ..., an, a1, a2, ..., an, a1, a2, ..., an, ... є розкладною, вивести кількість її траєкторій. У протилежному випадку вивести –1.

Приклади

decomp.indecomp.out
3
5 3 1
3

3
1 3 5
-1

9
1 2 3 4 5 6 7 8 9
5

Коментар
У першому випадку траєкторіями є підпослідовності:
(a1, a6, a7, a12, a13, ...),
(a2, a5, a8, a11, a14, ...),
(a3, a4, a9, a10, a15, ...).

У другому випадку послідовність не можна розкласти, бо a5 має одночасно бути наступним елементом у траєкторії після a2 та після a4.