1. Сходові числа
Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 256 MБ
Вхідний файл: numbers.in
Вихідний файл: numbers.out
Програма: numbers.*
Назвімо сходовими числами числа вигляду aa⋰a, де a — натуральне число, що входить у запис щонайменше двічі, а піднесення до степеня здійснюють «згори донизу». Наприклад, числа 33 = 27 та 2222 = 216 = 65 536 є сходовими. Сходовим числом є й одиниця, бо 1 = 11. А от числа 2, 3 і 5 сходовими не є, бо подати їх у потрібному вигляді неможливо.
Завдання
Установити, скільки натуральних чисел, що не перевищують заданого натурального числа n, є сходовими.
Вхідні дані
У вхідному файлі записано лише одне натуральне число n ≤ 109.
Вихідні дані
У вихідний файл вивести одне число — кількість сходових чисел у межах від 1 до n включно.
Приклад
numbers.in | numbers.out |
---|---|
5 | 2 |
2. Таблиця
Максимальна оцінка: 100 балів
Обмеження на час: 1 сек.
Обмеження на пам’ять: 256 MБ
Вхідний файл: table.in
Вихідний файл: table.out
Програма: table.*
Задано квадратну таблицю n×n, що складається з натуральних чисел. Розглядатимемо шляхи з лівої верхньої комірки таблиці у праву нижню, які довільним чином ідуть комірками таблиці праворуч та вниз (але ніколи ліворуч або вгору). Уздовж кожного такого шляху розташовано 2n − 1 число. Якщо для певного шляху даний набір чисел є «симетричним», тобто читається у зворотному порядку так само, як і у прямому, називатимемо вибраний шлях паліндромічним.
Завдання
За даною таблицею встановіть загальну кількість паліндромічних шляхів на ній.
Вхідні дані
У першому рядку вхідного файлу вказано розмір таблиці — ціле число n: 2 ≤ n ≤ 100. У наступних n рядках файлу записано по n натуральних чисел, що не перевищують 10 000 та задають таблицю.
Вихідні дані
Вихідний файл повинен містити єдине число: лишок від ділення на 101 кількості паліндромічних шляхів на заданій таблиці.
Приклади
table.in | table.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.in | polyline.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.in | divisors.out |
---|---|
12 | 6 |
5. Печери
Максимальна оцінка: 100 балів
Обмеження на час: 7 сек.
Обмеження на пам’ять: 128 MБ
Вхідний файл: caves.in
Вихідний файл: caves.out
Програма: caves.*
Пер Ґюнт, герой п’єси норвезького письменника Генріка Ібсена, потрапив у полон короля тролів. Щоб визволитися, Пер Ґюнт повинен перемогти у грі, яку король пропонує своїм бранцям. Правила гри такі:
є 10 печер , деякі з яких сполучені між собою;
бранець грає протягом m днів:
у перший день він може вибрати собі довільну печеру;
кожного наступного дня він може або залишитися у печері, у якій перебуває, або перейти у будь-яку іншу печеру, до якої є хід з поточної печери;
кожного дня король винагороджує бранця певною наперед обумовленою кількістю золотих монет, яка залежить і від печери, і від номера дня;
якщо за всю гру бранець накопичить кількість монет, виражену одним з l «королівських чисел», то бранця навіки залишають у полоні — він програв. Інакше його відпускають на волю з виграшем — усією накопиченою за час гри кількістю монет.
Завдання
Визначити Nw, pmax, pmin — відповідно кількість різних виграшів, найбільший і найменший виграші.
Вхідні дані
Перший рядок файлу містить десяткові записи натуральних чисел m, l, де m ≤ 60. Кожний з наступних 10 рядків містить по 10 цілих чисел — нулів або одиниць. При 1 ≤ j, k ≤ 10: якщо k-те число (j + 1)-го рядка файлу дорівнює 1, то з j-ої печери можна потрапити безпосередньо до k-ої печери і навпаки. Інакше це зробити неможливо. Кожний з наступних m рядків містить по 10 невід’ємних цілих чисел. При 1 ≤ j ≤ m і 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.in | caves.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.in | decomp.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.