You are on page 1of 67

Translated from Russian to Ukrainian - www.onlinedoctranslator.

com

ЗМІСТ
Теоретичні відомості ................................................................................................................................... 4
Комбінаторика ......................................................................................................................................... 4
Рекурсія та перестановки ....................................................................................................................... 4
Жадібний алгоритм ................................................................................................................................. 5
Завдання про розклад....................................................................................................................... 5
Коли можна бути жадібним? ........................................................................................................... 5
Інші Жадібні алгоритми .................................................................................................................. 6
Завдання, у яких жадібні алгоритми не дають оптимального рішення ................................. 7
Варіант 1............................................................................................................................................... 7
Варіант 2............................................................................................................................................... 8
Варіант 3............................................................................................................................................... 8
Варіант 4............................................................................................................................................... 9
Варіант 5............................................................................................................................................... 9
Варіант 6............................................................................................................................................. 10
Варіант 7............................................................................................................................................. 10
Варіант 8............................................................................................................................................. 11
Варіант 9............................................................................................................................................. 11
Варіант 10........................................................................................................................................... 12
Варіант 11........................................................................................................................................... 13
Варіант 12........................................................................................................................................... 13
Варіант 13........................................................................................................................................... 14
Варіант 14........................................................................................................................................... 14
Варіант 15........................................................................................................................................... 15
Варіант 16........................................................................................................................................... 15
Варіант 17........................................................................................................................................... 16
Варіант 18........................................................................................................................................... 16
Варіант 19........................................................................................................................................... 17
Варіант 20........................................................................................................................................... 18
Варіант 21........................................................................................................................................... 18
Варіант 22........................................................................................................................................... 19
Варіант 23........................................................................................................................................... 21
Варіант 24........................................................................................................................................... 21
Варіант 25........................................................................................................................................... 22
Варіант 26........................................................................................................................................... 23
Варіант 27........................................................................................................................................... 23
Варіант 28........................................................................................................................................... 24
Варіант 29........................................................................................................................................... 25
Варіант 30........................................................................................................................................... 25
Варіант 31........................................................................................................................................... 26
Варіант 32........................................................................................................................................... 27
Варіант 33........................................................................................................................................... 27
Варіант 34........................................................................................................................................... 28
Варіант 35........................................................................................................................................... 29
Варіант 36........................................................................................................................................... 30
Варіант 37........................................................................................................................................... 30
Варіант 38........................................................................................................................................... 31
Варіант 39........................................................................................................................................... 31
Варіант 40........................................................................................................................................... 32
Варіант 41........................................................................................................................................... 33
Варіант 42........................................................................................................................................... 34
Варіант 43........................................................................................................................................... 34
Варіант 44........................................................................................................................................... 36
Варіант 45........................................................................................................................................... 36
Варіант 46........................................................................................................................................... 37
Варіант 47........................................................................................................................................... 38
Варіант 48........................................................................................................................................... 38
Варіант 49........................................................................................................................................... 39
Варіант 50........................................................................................................................................... 39
Варіант 51........................................................................................................................................... 40
Варіант 52........................................................................................................................................... 40
Варіант 53........................................................................................................................................... 41
Варіант 54........................................................................................................................................... 42
Варіант 55........................................................................................................................................... 43
Варіант 56........................................................................................................................................... 43
Варіант 57........................................................................................................................................... 44
Варіант 58........................................................................................................................................... 45
Варіант 59........................................................................................................................................... 46
Варіант 60........................................................................................................................................... 46
Варіант 61........................................................................................................................................... 47
Варіант 62........................................................................................................................................... 47
Варіант 63........................................................................................................................................... 48
Варіант 64........................................................................................................................................... 49
Варіант 65........................................................................................................................................... 49
Варіант 66........................................................................................................................................... 50
Варіант 67........................................................................................................................................... 50
Варіант 68........................................................................................................................................... 51
Варіант 69........................................................................................................................................... 52
Варіант 70........................................................................................................................................... 53
Варіант 71........................................................................................................................................... 53
Варіант 72........................................................................................................................................... 54
Варіант 73........................................................................................................................................... 55
Варіант 74........................................................................................................................................... 55
Варіант 75........................................................................................................................................... 56
Варіант 76........................................................................................................................................... 57
Варіант 77........................................................................................................................................... 58
Варіант 78........................................................................................................................................... 58
Варіант 79........................................................................................................................................... 59
Варіант 80........................................................................................................................................... 60
Варіант 81........................................................................................................................................... 60
Варіант 82........................................................................................................................................... 61
Варіант 83........................................................................................................................................... 62
Теоретичні відомості

Комбінаторика

Рекурсія та перестановки

Рекурсивна функція представляє таку конструкцію, коли він функція викликає себе.

Візьмемо, наприклад, обчислення факторіалу, що використовує формулу n! = 1 * 2 * ...


* n. Наприклад, факторіал числа 5 дорівнює 120 = 1*2*3*4*5.

Визначимо метод для знаходження факторіалу:


Жадібний алгоритм

Жадібний алгоритм (greedy algorithm) - це алгоритм, який на кожному кроці робить


локально найкращий вибір, сподіваючись, що підсумкове рішення буде оптимальним.
Наприклад,алгоритм Дейкстри знаходження найкоротшого шляху у графі цілком
собі жадібний, тому що ми на кожному кроці шукаємо вершину з найменшою вагою, в якій
ми ще не бували, після чого оновлюємо значення інших вершин. При цьому можна довести,
що найкоротші шляхи, знайдені на вершинах, є оптимальними.
До речі,алгоритм Флойда, який теж шукає найкоротші шляхи у графі (щоправда, між
усіма вершинами), не є прикладом жадібного алгоритму. Флойд демонструє інший метод –
метод динамічного програмування.
Використання жадібного алгоритму досить стандартне. Розглянемо його на прикладі
наступного завдання:

Завдання про розклад


Нехай програмісту-фрілансеру Васю Пупкіну дано n завдань. У кожного завдання
відомий свій дедлайн, а також його вартість (тобто якщо він не виконує це завдання, він
втрачає стільки грошей). Вася настільки крутий, що за один день може зробити одне
завдання. Виконання завдання можна розпочати з 0. Потрібно максимізувати прибуток.
Класичний приклад застосування жадібності: Васі вигідно робити найдорожчі
завдання, а найменш дорогі можна і не виконувати — тоді прибуток буде максимальним.
Виникає питання: як розподілити завдання? Перебиратимемо завдання в порядку
зменшення вартості і заповнюватимемо розклад наступним чином: якщо для замовлення є
ще хоча б одне вільне місце в розкладі раніше його дедлайну, то поставимо його на
останнє з таких місць, інакше в термін ми його не можемо виконати, значить поставимо в
кінець із вільних місць.
Коли можна бути жадібним?

ЗавждиІноді може виникнути спокуса використовувати спрагу скрізь, де це


можливо, але на деяких завданнях це неприйнятно. Наприклад,завдання про рюкзак: злодій
пробрався на склад, в якому зберігаються три речі вагою 10 кг, 20 кг та 30 кг та вартістю
60, 100 та 120 дерев'яних вічнозелених нанорублів відповідно. Злодій максимум може
забрати 50 кг. Потрібно максимізувати прибуток злодія. Якщо надходити тут жадібно і
вибирати найціннішу річ (тобто, 6 нанорублів за кг першої штуки, 5 нанорублів за кг другої
та 4 нанорублі за кг третьої), то злодій має взяти першу річ, потім залишиться місце для
другої речі, проте оптимальне рішення складає друга та третя річ.
Висновок: є область застосування жадібних алгоритмів. Загальних рецептів тут
немає, але є досить потужний інструмент, за допомогою якого здебільшого можна
визначити, чи дасть жадина оптимальне рішення. Називається матроїд.
У рамках виконання практичної доводити що жадібний алгоритм є
оптимальним не потрібно, відомості нижче даються в ознайомлювальних цілях

Як підказує вікіпедія,матроїд- це пара (X, I), де X - кінцева множина, звана носієм


матроїда, а I - деяка множина підмножин X, зване сімейством незалежних множин. При
цьому мають виконуватися такі умови:
1.
Безліч I не порожня. Навіть якщо вихідна множина X була порожньою — X = Ø, то
I складатиметься з одного елемента — множини, що містить порожню. I = {{Ø}}
2.
Будь-яке підмножина будь-якого елемента множини I також буде елементом цієї
множини.
3.
Якщо множини A і B належать множині I, а також відомо, що розмір А менший за
B, то існує якийсь елемент x з B, що не належить А, таке що об'єднання x і A буде
належати множині I. Ця властивість є не зовсім тривіальною , але найчастіше
найважливішим із решти.
Матроїд називається зваженим, якщо на множині X існує адитивна вагова функція w.
Вага множини визначатиметься як сума ваг його елементів.
Повернемося до програміста-фрілансера із завданнями. Тут можна розглянути
наступний матроїд: нехай носієм буде безліч завдань, а незалежними множинами успішно
виконані завдання. Вагою кожної заявки нехай буде її вартість. Перевіримо, чи є дана пара
матроїдом:
1. перша властивість, очевидно, виконується. Те, що Вася не хоче заробляти гроші не
має значення.
2. друге безліч теж виконується. Чому це так: давайте відсортуємо успішно виконані
завдання у порядку збільшення дедлайну. У такому порядку вони все одно будуть
успішно виконані. У такому порядку очевидно, що будь-яке підмножина успішно
виконаних завдань буде успішно виконано.
3. третя властивість, хоч і не очевидна, але виконується. Нехай ми маємо дві множини
успішно виконаних завдань A і B, причому відомо, що |A| < |B|. Стандартно
відсортуємо завдання у порядку збільшення дедлайну в обох множинах. Візьмемо
завдання з B, якого немає в A, і спробуємо додати його до безлічі A. Це в нас вийде,
адже якби в А не було пропуску, то це завдання мало бути присутнім.
Навіщо це я? Вся принадність матроїдів полягає в теореміРадо-Едмондса: якщо
довести, що об'єкт є матроїдом, то жадібний алгоритм працюватиме коректно і видаватиме
правильний результат.

Інші Жадібні алгоритми


• Алгоритм Хаффмана(Адаптивний алгоритм оптимального префіксного кодування
алфавіту з мінімальною надмірністю).
• Алгоритм Крускала(Пошук остовного дерева мінімальної ваги у графі).
• Алгоритм Пріма(Пошук остовного дерева мінімальної ваги у зв'язковому графі).
Узагальненням жадібних алгоритмів єалгоритм Радо-Едмондса.
Завдання, у яких жадібні алгоритми не дають оптимального рішення
Для ряду завдань, що належать докласу NP, жадібні алгоритми не дають оптимального
рішення До них відносяться:

• завдання комівояжера;
• завдання мінімального розмальовки графа;
• завдання розбиття графа на підграфи;
• завдання виділення максимальної кліки;
• завдання, пов'язані зі складаннямрозкладів.

Варіант 1
Щоб заробити величезний капітал, новим російським необхідно мати неординарне
мислення. Звичайно, при такій складній роботі повинні бути присутніми якісь особливі
механізми для відпочинку та розваг. З цією метою в казино придумали спеціальний набір
доміно для нових росіян. Звичайні кістки доміно є набір з різних комбінацій поєднань двох
плиток, на кожній з яких відображається від 0 до 6 точок. А цей набір є подібними
поєднаннями плиток, але кількість точок на кожній може бути від нуля до заданого
значення, яке залежить від інтелектуального рівня гравців. У такому наборі кісток присутні
різні поєднання плиток, але при цьому жодна з кісток не повторюється (навіть такі
комбінації як 2-5 і 5-2 вважаються однаковими).
Для виготовлення даного набору кісток перед виробником постала проблема обчислення
сумарної кількості точок на всіх кістках доміно. Це пов'язано з тим, що доміно для нових
росіян прикрашається діамантами, які є крапками на плитках і при виготовленні необхідно
оцінити вартість.
Допоможіть написати програму, яка вирішить це завдання.
Вхідні дані
Вхідний файл INPUT.TXT містить одне натуральне число N – максимальна кількість точок
на одній плитці доміно. (N ≤ 10000)
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть кількість діамантового каміння, яке необхідно
виготовити для заданого набору кісток.
приклад

№ INPUT.TXT OUTPUT.TXT

1 2 12
Варіант 2
Якось, прийшовши додому зі школи, Світлана виявила записку від мами, в якій вона
просила зробити салат. Світлана знала, що салат - це суміш двох або більше інгредієнтів,
тому їй не склало труднощів виконати мамине прохання.
Але Світлана хоче стати математиком, тому, для тренування, вирішила порахувати,
скільки різних салатів вона зможе зробити з наявних продуктів (майонез, огірки,
помідори). Після невеликих розрахунків отримала відповідь: 4.
Знаючи, що ви любите цікаві завдання, і хочете стати програмістами, Світлана попросила
вас написати програму, яка визначає кількість різних салатів для довільної кількості
інгредієнтів.
Вхідні дані
Вхідний файл INPUT.TXT містить натуральне число N – кількість наявних інгредієнтів (N
< 32).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть кількість різних салатів.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 4

2 4 11

Варіант 3
Знайдіть кількість невироджених прямокутників зі сторонами, паралельними осям
координат, вершини яких лежать у точках із цілими координатами всередині або на межі
прямокутника, протилежні кути якого знаходяться у точках (0, 0) та (W, Н).
Вхідні дані
Вхідний файл INPUT.TXT містить два натуральні числа W і Н, що не перевищують 1000.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 11 1
2 21 3

3 22 9

Варіант 4
У відомому місті Кизилорда, де знаходяться N центрів, мешкає якийсь граф - Азамат. Він
бажає дізнатися кількість різних будівель доріг між ними, якщо відомо, що два центри
можуть бути пов'язані в одному з двох напрямків або не пов'язані взагалі. Наприклад, при
N=2 все виходить 3 варіанти:
обидва центри не пов'язані
дорога йде з першого до другого центру
дорога йде з другого до першого центру
Вхідні дані
У вхідному файлі INPUT.TXT записано єдине натуральне число - кількість центрів у місті,
2 ≤ N ≤ 100.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT необхідно вивести число різних будівель
доріг.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 2 3

2 4 729

Варіант 5
Шаблоном розміру n назвемо рядок довжини n, кожен із символів якого входить до
множини {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, ?}. Шаблони перетворюються на рядки з
цифр за такими правилами:
• символи від 0 до 9 можуть бути перетворені тільки самі в себе; • символ a може бути
перетворений у будь-який із символів 0,1, 2, 3; c може перетворений у будь-який із
символів 2,3,4,5; символ d може перетворений у будь-який із символів 3,4,5,6; символ e
може перетворений у будь-який із символів 4,5,6,7; символ f може бути перетворений на
будь-який із символів 5,6,7,8;• символ g може бути перетворений на будь-який із символів
6,7,8,9;• символ ? може бути перетворений у будь-який із символів від 0 до 9;
Дано два шаблони: p1 і p2. Розглянемо множину S1 рядків, які можуть бути отримані з p1
за описаними правилами, і множина S2 рядків, які можуть бути отримані з p2. Необхідно
знайти кількість рядків, що входять в обидва ці множини.
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить шаблон p1, другий - шаблон p2.
Шаблони мають однаковий позитивний розмір не більше 9.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 ???abc 64

2 ???000 1

3 abc999 0

Варіант 6
Задано натуральне число N. Потрібно написати програму, яка знаходить кількість
натуральних чисел, що не перевищують N і не поділяються на жодне з чисел 2, 3, 5.
Вхідні дані
Вхідний файл INPUT.TXT містить число N (1 ≤ N ≤ 109).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 10 2

2 20 6

Варіант 7
На день народження Пете подарували набір карток із літерами. Тепер Петя з великим
інтересом складає з них різні слова. І ось, одного разу, склавши чергове слово, Петя
зацікавився питанням: "А скільки різних слів можна скласти з тих самих карток, що й
це?".
Допоможіть йому відповісти на це запитання.
Вхідні дані
У вхідному файлі INPUT.TXT задано слово, складене Петей - рядок з маленьких
англійських букв не довше 15 символів.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть одне ціле число – відповідь на поставлене
завдання.
приклад

№ INPUT.TXT OUTPUT.TXT

1 solo 12

Варіант 8
Петя грає у цікаву гру. Для цієї гри потрібна монетка. Петя підкидає її n разів і вважає,
скільки разів випадає «решка». Якщо решка випадає хоча б m разів, Петя вважає, що він
виграв гру.
Якось Петя задумався, яка ймовірність того, що він виграє гру. Для цього він хоче знайти
кількість послідовностей результатів підкидання монетки, що містять рівно n підкидань,
при яких "рішка" випала хоча б m разів.
Допоможіть Петі - знайдіть це число, вважаючи, що при кожному кидку монета може
випасти або "орлом", або "решкою".
Вхідні дані
Вхідний файл INPUT.TXT містить два цілих числа: n і m (1 ≤ n ≤ 20, 0 ≤ m ≤ n).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 20 4

2 32 4

Варіант 9
Всі знають, що щасливі числа – це ті числа, які містять лише щасливі цифри 7 та 4. Вам
потрібно знайти кількість щасливих чисел невеликих N.
Вхідні дані
У єдиному рядку вхідного файлу INPUT.TXT записано натуральне число N, що не
перевищує 1032.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести одне ціле число –
відповідь на завдання.
приклад

№ INPUT.TXT OUTPUT.TXT

1 56 4

Варіант 10
У міському зоопарку містяться тварини різних видів. Для участі у міжнародній виставці
«Три тварюки» зоопарк має представити трьох тварин різних видів.
Потрібно написати програму, яка обчислить кількість способів вибрати трьох тварин для
участі у виставці.
Наприклад, якщо у зоопарку два ведмеді, тигр, лев та пінгвін, тобто сім способів обрати
трьох тварин:
перший ведмідь, тигр та лев;
перший ведмідь, тигр та пінгвін;
перший ведмідь, лев та пінгвін;
другий ведмідь, тигр та лев;
другий ведмідь, тигр та пінгвін;
другий ведмідь, лев та пінгвін;
тигр, лев та пінгвін.
Вхідні дані
Вхідний текстовий файл INPUT.TXT містить у першому рядку натуральне число n –
кількість видів тварин у міському зоопарку (1 ≤ n ≤ 1000). У другому рядку через пропуск
записані n натуральних чисел – кількість тварин відповідного виду. Число тварин кожного
виду не перевищує 1000.
Вихідні дані
Вихідний текстовий файл OUTPUT.TXT має містити одне число – кількість способів
вибрати трьох тварин міжнародної виставки.
Приклади
№ INPUT.TXT OUTPUT.TXT

1 42 1 1 1 7

2 3100 100 100 1000000

Варіант 11
Потрібно знайти число способів розставити на шахівниці N×NK тур так, щоб вони не били
один одного. Усі човни вважаються однаковими.
Вхідні дані
У вхідному файлі INPUT.TXT записані натуральні числа N та K (N, K ≤ 8).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть одне ціле число – відповідь завдання.
приклад

№ INPUT.TXT OUTPUT.TXT

1 88 40320

Варіант 12
Перестановкою N елементів називається впорядкований набір N різних чисел від 1 до N.
Кількість всіх перестановок порядку N дорівнює PN = N!
Потрібно знайти перестановку за її номером у лексикографічному порядку (за абеткою).
Наприклад, для N=3 лексикографічний порядок перестановок виглядає так:
(1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1).
Таким чином, перестановка (2,3,1) має номер 4 у цій послідовності.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT записано число N (1 ≤ N ≤ 12) – кількість
елементів у перестановці, у другому – число K (1 ≤ K ≤ N!) – номер перестановки.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть через пропуск N чисел - перестановку, що
шукається.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 11 1
2 32 132

Варіант 13
Визначимо відстань між рівними по довжині рядками SA та SB (позначимо d(SA, SB)) як
суму для всіх 1 ≤ i ≤ |SA| найкоротших відстаней між літерами SA(i) та SB(i) у циклічно
замкнутому англійському алфавіті (тобто після букви «a» йде буква «b», ..., після букви
«z» йде «a»). Наприклад, d(aba, aca) = 1, а d(aba, zbz) = 2.
Нагадаємо, що циклічним зсувом рядка S називається рядок (позначимо, як S→k)
Sk+1Sk+2Sk+3 ... S|S|S1S2 ... Sk для деякого k, де |S| - Довжина рядка S.
Ступенем циклічної відстані між рядками SA і SB (|SA| = |SB|) називається сума:

Потрібно порахувати ступінь циклічної відстані заданих рядків SA та SB.


Вхідні дані
Вхідний файл INPUT.TXT містить два рядки рівної довжини, що не перевищує 105
символів. Рядки складаються лише з маленьких букв англійського алфавіту.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 ab 1

2 abac 8

Варіант 14
Нехай х – натуральне число. Назвемо у його дільником, якщо 1 ≤ у ≤ х і залишок від
розподілу х на дорівнює нулю.
Вказано число х. Знайдіть кількість його дільників.
Вхідні дані
Вхідний файл INPUT.TXT містить задане число x (1 ≤ x ≤ 1018). Всі найпростіші дільники
числа x не перевищують 1000.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 12 6

2 239 2

Варіант 15
Нехай х – натуральне число. Назвемо у його дільником, якщо 1 ≤ у ≤ х і залишок від
розподілу х на дорівнює нулю.
Вказано число х. Знайдіть кількість його дільників, які поділяються на кожне із простих
чисел, на яке ділиться х.
Вхідні дані
Вхідний файл INPUT.TXT містить ціле число x (1 ≤ х ≤ 1018). Усі прості дільники числа х
не перевищують тисячі.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 12 2

2 239 1

Варіант 16
Розглянемо фігуру, аналогічну показаної малюнку (великий рівносторонній трикутник,
складений з маленьких рівносторонніх трикутників). На малюнку наведено фігуру, що
складається з 4-х рівнів трикутників.
Потрібно написати програму, яка визначатиме, скільки всього в ній трикутників
(необхідно враховувати не тільки "маленькі" трикутники, а взагалі всі трикутники -
зокрема, трикутник, виділений жирним, а також вся фігура, що нас цікавлять
трикутниками).
Вхідні дані
Вхідний файл INPUT.TXT містить одне число N - кількість рівнів у фігурі (1 ≤ N ≤ 105).
Вихідні дані
Вихідний файл OUTPUT.TXT повинен містити одне число - кількість трикутників у такій
фігурі.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 1 1

2 2 5

3 4 27

Варіант 17
У вас є N збудованих в ряд коробок, червоних і синіх куль. Усі червоні кулі (аналогічно та
сині) ідентичні. Ви можете класти кулі у коробки. Дозволяється розміщувати в коробках
кулі як одного, так і двох видів одночасно. Також дозволяється залишати деякі з коробок
порожніми. Не обов'язково класти всі кулі у коробки.
Потрібно написати програму, яка визначає кількість різних способів, якими можна
заповнити коробки кулями.
Вхідні дані
Вхідний файл INPUT.TXT містить цілі числа N, A, B. (1 ≤ N ≤ 20, 0 ≤ A, B ≤ 20)
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 111 4

2 211 9

Варіант 18
Петя та Вася захопилися азартною грою на гроші. Гра складається з безлічі раундів, у
кожному з яких кидається монетка і якщо випадає «Рішка», то перемагає Петя і отримує
очко, інакше очко присуджується Васі. Набрані очки у різних раундах підсумовуються і
той, хто першим набере N очок, виграє.
Раптом серед гри пролунав дзвінок, і хлопцям довелося закінчити гру. Допоможіть Пете
та Васі справедливо поділити поставлені на кон монети між собою відповідно до
математичного очікування виграшу.
Вхідні дані
Вхідний файл INPUT.TXT містить в одному рядку 4 цілих числа N, K1, K2 і S. Усі числа
розділені пробілами. N – кількість очок, які потрібно набрати для перемоги. K1 та K2 –
поточні очки Петі (K1) та Васі (K2). S – число монет, які на кону та які необхідно поділити
між гравцями.
Обмеження: 1 ≤ N ≤ 50, 0 ≤ K1, K2 < N, 1 < S < 10100.
Вихідні дані
У вихідний файл OUTPUT.TXT через пропуск виведіть два цілих числа: кількість монет,
які повинні отримати Петя і Вася. Не забудьте, що сума цих чисел точно повинна
дорівнювати S. Гарантується, що однозначна відповідь у цілих числах існує.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 1 2 16 4 12

2 4112 11

3 5 1 4 32 2 30

Варіант 19
Петя виписав усі поєднання з N перших англійських букв по K букв. У кожному
поєднанні він виписував літери у лексикографічному порядку. Поєднання він виписував у
лексикографічному порядку по одному у рядку. Тепер він хоче дізнатися: яке слово
записано в M-му рядку.
Вхідні дані
У вхідному файлі INPUT.TXT записані цілі числа N, K, M (1 ≤ N ≤ 26, 1 ≤ K ≤ N).
Гарантується, що M не перевищує кількості всіх виписаних поєднань.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть M-е виписане поєднання.
приклад

№ INPUT.TXT OUTPUT.TXT

1 423 ad

Пояснення
Усі поєднання у порядку їх записи: ab, ac, ad, bc, bd, cd. Тут 3м за рахунком поєднання є
ad.
Варіант 20
Партія у волейболі виграється командою, яка першою набирає 25 очок з перевагою
мінімум у два очки. У разі рівного рахунку 24-24, гра продовжується до досягнення
переваги в 2 очки (26-24; 27-25).
Дві зіграні партії, які закінчилися з однаковим рахунком, вважатимемо різними, якщо
рядки, в яких виписано порядок набору очок командами, не рівні.
Комітет із проведення змагань з волейболу зацікавився кількістю різних партій, що
закінчуються рахунком 25:23. Їх виявилося 16 123 801 841 550.
Визначити скільки існує різних партій, що закінчуються заданим рахунком.
Вхідні дані
У вхідному файлі INPUT.TXT вказано кінцевий рахунок у партії (тобто такий, у якому
перемога у партії віддається одній із команд). Також відомо, що жодна із команд не
набрала понад 40 очок.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть кількість різних партій, які закінчуються цим
рахунком.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 25:12 1251677700

2 20:25 1761039350070

3 25:23 16123801841550

Варіант 21
Перестановкою N елементів називається впорядкований набір N різних чисел від 1 до N.
Розміщенням порядку K називають підмножина елементів деякої перестановки порядку N.
Наприклад, (1, 3) – розміщення порядку 2 для перестановки (1, 2, 3) порядку 3.
Потрібно за заданим розміщенням визначити його позицію в лексикографічному порядку
всіх можливих розміщень, утворених з різних перестановок порядку N.
Наприклад, лексикографічна послідовність всіляких розміщень для K=2 і N=3 виглядає
так:
(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)
Таким чином, переміщення (2,3) має номер 4 у цій послідовності.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT знаходяться числа N і K (1 ≤ K ≤ N ≤ 12). У
другому рядку записані K чисел з діапазону від 1 до N – розміщення.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть однину - номер даного розміщення.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 23 2 6

2 6 41 3 2 5 14

Варіант 22
Ваня вирішив зайнятися музикою. Але який музичний інструмент вибрати для вивчення,
він поки що не вирішив. Його друг Женя, будучи трохи старшим і досвідченим, вже добре
освоїв гітару. Він хоче продемонструвати Вані можливості гри на гітарі.
На гітарі шість струн, кожна з них може бути затиснута пальцем на певному ладі або
залишена відкритою (не притиснутою ні на якому ладу), від цього змінюється нота, яка
звучить, коли струна коливається.
Щоб продемонструвати можливості інструменту, Женя веде з Ванею таку розмову. Ваня
називає деякий акорд, а Женя каже йому, скільки способів можна цей акорд взяти на
гітарі, тобто вибрати на кожній струні лад і затиснути його (або залишити її відкритою),
щоб цей акорд зазвучав. Женя любить гучний звук, тому звучати мають усі струни.
Нот у музиці, звичайно, сім, але, крім них, існують ще півтони. Тому для зручності ми
вважатимемо, що нот всього 12. Їхні позначення такі: A, Bb, B, C, C#, D, D#, E, F, F#, G,
G#.
Крім цього, C# може бути позначений як Db, Bb як A#, D# як Eb, F# як Gb, а G# як Ab.
Позначення нот наведено в порядку їхнього прямування, тобто за A йде Bb, за Bb йде B, . .
. , за G# йде знову A. Відстань між будь-якими двома сусідніми нотами дорівнює одному
півтону.
Струн у гітари шість, вони занумеровані з 1 по 6. Кожна струна видає певну ноту, коли
звучить і не притиснута на жодному ладі. Сукупність нот, які відповідають відкритим
струнам, називається строєм гітари. Якщо відкриту струну, що видає ноту номер i,
затиснути на j-тому ладі (лади нумеруються з одиниці), то цією струною видаватиметься
нота i + j, тобто від ноти i треба зміститися на j нот за циклом. Наприклад, якщо відкрита
струна видає ноту D, то затиснувши її третьому ладу, ми отримаємо ноту F, але в
восьмому – ноту Bb.
На гітарі Вані N ладів, тому 1 ≤ j ≤ N. Акордів існує безліч, але будуються вони за
загальною схемою. Спочатку вибирається так звана тоніка акорду – нота, від якої він
будуватиметься. Потім інші ноти акорду виписуються щодо неї.
Запис акорду і двох частин. Перша частина – це завжди позначення тоніки акорду. Друга
частина описує саме звучання акорду. Ми обмежимося кількома окремими випадками.
Мажорний акорд
До тоніки додаються ноти, що віддаляються на 4 та 7 півтонів. Друга частина запису цього
акорду порожня. Приклад: Eb складається з нот Eb, G, Bb.
Мінорний акорд
До тоніки додаються ноти, що віддаляються на 3 і 7 півтонів. Друга частина запису цього
акорду складається з маленької англійської літери m. Приклад: Am, складається з нот A,
C, E.
Мажорний септакорд
Утворюється з мажорного акорду шляхом додавання ноти, що віддаляється від тоніки на
10 півтонів. Друга частина складається з цифри 7. Приклад: E7 складається з нот E, B, G #,
D.
Мінорний септакорд
Утворюється з мінорного акорду шляхом додавання ноти, що віддаляється від тоніки на
10 півтонів. Друга частина складається з літери m і цифри 7. Приклад: Gm7 складається з
нот G, D, Bb, F.
Напишіть програму, яка допомагає Жені відповідати на запитання Вані. Врахуйте, що
акорд вважається взятим на гітарі, якщо жодна нота акорду не пропущена і взята жодна
нота, не належить акорду. На відміну від реальної гри на гітарі, відстань між ладами, на
яких затиснута хоча б одна струна, може бути будь-якою.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT міститься N – число ладів гітари (0 ≤ N ≤ 9).
У другому рядку записаний лад гітари – шість нот, що відповідають шести струнам гітари.
Ноти позначені, як у тексті завдання, і відокремлені пробілами. Регістр літер важливий. У
третьому рядку записано акорд, який треба взяти на гітарі.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть кількість способів взяти цей акорд на даній
гітарі.
Приклади

№ INPUT.TXT OUTPUT.TXT
1 3E BGDA EC 4

2 0A CEAC EAm 1

Пояснення до прикладів
Якщо позначити варіант взяття акорду шістьма цифрами – номерами ладів, на яких
затиснуті струни з першої по шосту, вважаючи відкриту струну затиснутою на нульовому
ладі, то в першому прикладі чотири способи такі:
(0; 1; 0; 2; 3; 0)(3; 1; 0; 2; 3; 0)(0; 1; 0; 2; 3; 3)(3; 1; 0; 2; 3; 3)
У другому прикладі можна грати тільки на відкритих струнах, зате гітара налаштована на
необхідний акорд.
Варіант 23
В результаті чергової хитромудрої комбінації у Остапа Бендера та його компаньйонів – K
дітей лейтенанта Шмідта виявилося X рублів п'ятирублевими банкнотами. І ось справа, як
водиться, дійшла до розподілу...
Шура Балаганов запропонував " справедливості " , тобто. всім порівну. Паніковський
вирішив собі віддати половину, а решті "за заслугами". Кожен з K дітей лейтенанта
запропонував щось цікаве. Проте, у Великого Комбінатора була своя думка щодо цього...
Ваше ж завдання полягає у знаходженні кількості способів розділити наявні гроші між
усіма учасниками цих славних подій: K дітьми лейтенанта Шмідта та Остапом Бендером.
Вхідні дані
У вхідному файлі INPUT.TXT записані цілі числа X (0 ≤ X ≤ 500) та K (0 ≤ K ≤ 100).
Природно, що число X ділиться на 5. Та й при розподілі рвати п'ятирублеві банкноти не
дозволяється.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть одне ціле число - кількість способів розподілу.
приклад

№ INPUT.TXT OUTPUT.TXT

1 15 2 10

Варіант 24
Назвемо число гладким, якщо його цифри, починаючи зі старшого розряду, утворюють
послідовність. Упорядкуємо усі такі числа у зростаючому порядку та надамо кожному
номер.
Вам потрібно за номером N вивести N-е гладке число.
Вхідні дані
У вхідному файлі INPUT.TXT міститься номер N (1 ≤ N ≤ 2147483647).
Вихідні дані
Вихідний файл OUTPUT.TXT повинен містити шукане N гладке число.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 1 1

2 11 12

3 239 1135

Варіант 25
2-3 дерево – елегантна структура даних, винайдена Джоном Хопкрофтом. Вона
призначена для використання з тією ж метою, як і двійкове дерево пошуку. 2-3 дерево
являє собою дерево з коренем, яке має наступні властивості:
корінь і кожна внутрішня вершина має 2 або 3 дитини;
глибина всіх листків одна і та ж.
Єдиний виняток - це коли дерево містить одну вершину. І тут корінь дерева є листом, і
тому немає дітей. Основна суть наведених властивостей у тому, що дерево з листами L
має висоту O(log L).
Взагалі кажучи, може існувати кілька 2-3 дерев із L листям. Наприклад, на наступному
малюнку показані два можливі дерева з 6 листами.

За заданим числом L знайдіть кількість різних 2-3 дерев з L листям. Оскільки відповідь
може бути досить великою, виведіть її за модулем R.
Вхідні дані
Вхідний файл INPUT.TXT містить два цілих числа: L і R (1 ≤ L ≤ 5 000, 1 ≤ R ≤ 109).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть одне число – кількість різних 2-3 дерев, що
мають рівно L листя, взяте за модулем R.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 6 1000000000 2

2 7 1000000000 3

Варіант 26
Василь Афанасьєв як курсова робота отримав завдання - побудувати комп'ютер, який би
працював не з числами, а з рядками. Вася спершу фіксував деякий алфавіт. Позначимо за
K кількість букв у цьому алфавіті. Далі, Вася фіксував деякий набір різних рядків,
довжини трохи більше N кожна, що він назвав базовим. Комп'ютер вміє працювати тільки
з рядками, які виходять конкатенацією (тобто приписуванням) деяких рядків з цього
набору один до одного (одну і ту ж рядок при приписуванні можна використовувати
кілька разів). Проте виявилося, що базовий набір виявився надмірним! Це означає, що в
ньому був рядок, при видаленні якого з набору не змінюється безліч рядків, з якими вміє
працювати комп'ютер.
Васю зацікавило питання – як багато може бути рядків у ненадмірному наборі, і скільки
таких максимальних наборів існує.
Так як його комп'ютер ще не готовий, він попросив Вас порахувати це число.
Вхідні дані
У вхідному файлі INPUT.TXT міститься два цілих числа 1 ≤ N ≤ 1 000 та 1 ≤ K ≤ 100 –
відповідно максимальна довжина рядка та кількість символів в алфавіті.
Вихідні дані
У першому рядку вихідного файлу OUTPUT.TXT виведіть кількість рядків у
максимальному наборі. У другій – кількість таких наборів.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 11 11

2 32 121

Варіант 27
Для заданих натуральних чисел N і K потрібно обчислити кількість чисел від 1 до N, що
мають у двійковому записі рівно K нулів.
Наприклад, якщо N=8 і K=1, ми можемо записати всі числа від 1 до 8 в двійковій системі
числення:
1, 10, 11, 100, 101, 110, 111 та 1000.
Звідки видно, що числа 10, 101 і 110 мають рівно один нуль у записи, тобто. правильна
відповідь – 3.
Вхідні дані
В єдиному рядку вхідного файлу INPUT.TXT записано два натуральні числа через
пропуск N і K, що не перевищують 109.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести одне ціле число -
кількість чисел від 1 до N з K нулями в двійковому поданні.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 81 3

2 13 2 4

3 1000 5 210

Варіант 28
Іван Іванович запросив на свій день народження багато гостей. Він написав на картках
прізвища всіх гостей і розклав ці картки на столі, вважаючи, що кожен гість сяде там, де
виявить картку зі своїм прізвищем (прізвища в усіх гостей різні). Проте гості не звернули
уваги на картки та сіли за стіл у довільному порядку. При цьому Іван Іванович із подивом
виявив, що жоден гість не сів на призначене місце.
Потрібно написати програму, яка знайде скільки можна розсадити гостей так, щоб жоден з
них не сидів там, де лежала картка з його прізвищем.
Вхідні дані
У вхідному файлі INPUT.TXT задано ціле число N – кількість гостей (1 ≤ N ≤ 100).
Вихідні дані
Вихідний файл OUTPUT.TXT повинен містити одне ціле число – кількість способів
розсадити гостей.
Приклади

№ INPUT.TXT OUTPUT.TXT
1 1 0

2 2 1

3 5 44

4 20 895014631192902121

Варіант 29
Дано послідовність натуральних чисел 7, 11, 13, 14, 19, 21, 22, 25, ….
Потрібно написати програму, яка за заданим N знаходить N-ий член цієї послідовності.
Вхідні дані
Вхідний файл INPUT.TXT містить число N (1 ≤ N ≤ 2147483647).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть N-ий член послідовності.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 1 7

2 6 21

Варіант 30
У стародавньому Китаї було вигадано безліч цікавих ігор. Усі знають дуже відому гру
«Majong». У цьому завдання ми розглянемо іншу цікаву китайську гру Цзяньшидзи.
Коротко сформулюємо правила гри:
З двох куп каміння, двоє граючих по черзі можуть брати:
Довільне ненульове число каменів із однієї купи.
Одночасно за однаковим довільним ненульовим числом каменів з обох куп.
Виграє той, хто візьме своїм ходом останній камінь.
Не складно визначити у яких випадках виграє перший, а в яких випадках виграє другий
гравець. Завдання зводиться до знаходження так званих програшних пар (ai, bi), що
означають, що при купах каменів, що містять ai і bi каменів, програє той, хто в даний
момент здійснює свій хід. Ви повинні вирішити це завдання, але трохи в іншому вигляді.
Позначимо програшну, для позицію, що ходить, коли в купках a і b каменів (a, b).
Оскільки порядок куп не грає ролі, завжди будемо вважати, що a ≤ b. Упорядкуємо всі
програшні позиції в лексикографічному порядку, інакше кажучи:
(a1, b1) < (a2, b2), якщо (a1< a2) або ((a1= a2) та (b1< b2)).
Занумеруємо програшні пари, починаючи з 0. Ваше завдання: знайти k-у пару програшних
куп.
Вхідні дані
У першому рядку вхідного файлу INTPUT.TXT знаходиться число N, (1 ≤ N ≤ 1000) –
кількість тестів у файлі. У наступних N рядках містяться числа ki, (0 ≤ ki ≤ 109)
порядковий номер пари програшних куп, яку потрібно знайти.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть N пар чисел (aki, bki) по одному у кожному
рядку.
приклад

№ INPUT.TXT OUTPUT.TXT

1 3012 0 01 23 5

Варіант 31
У сучасній біології вченим часто доводиться мати справу із послідовностями ДНК. Ці
послідовності найчастіше є дуже довгими, і їхня ручна обробка вимагає великої кількості
часу та сил. Тому виникає ідея автоматизувати цей процес.
Для цього можна застосовувати комп'ютерні методи обробки даних, наприклад, дуже
корисними є алгоритми на рядках. У цьому послідовність ДНК буде представлятися у
вигляді непустого рядка, всі символи якої входять у безліч {A, G, С, T}.
Нехай дані дві послідовності ДНК: s = s1s2 ... sn і t = t1t2 ... tm. Будемо говорити, що t
може вийде в результаті еволюції s, якщо s є підпослідовністю t, тобто існує така
послідовність індексів 1 ≤ i1 < i2 < … < in ≤ m, що s1=ti1, s2=ti2, … sn=tin . Необхідно
з'ясувати, чи послідовність t вийде в результаті еволюції з s.
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить послідовність s, другий - послідовність
t. Розмір вхідного файлу вбирається у 256 кілобайт.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть слово YES, якщо послідовність t могла вийти в
результаті еволюції s, і слово NO - інакше.
приклад

№ INPUT.TXT OUTPUT.TXT
1 GTAAGCTA YES

2 AAAGGAAAAAT NO

Варіант 32
Одного неформала вигнали з роботи, і тепер йому треба якось заробляти собі життя.
Подумавши, він вирішив, що зможе мати дуже непогані гроші на продажі свого волосся.
Відомо, що пункти прийому купують волосся довільної довжини вартістю З у. за кожний
сантиметр. Так як волосяний ринок є дуже динамічним, то ціна одного сантиметра волосся
змінюється щодня, як і курс валют. Неформал є дуже добрим бізнес-аналітиком. Він зміг
обчислити, якою буде ціна одного сантиметра волосся в кожен із найближчих N днів (для
зручності пронумеруємо дні у хронологічному порядку від 0 до N-1). Тепер він хоче
визначити, які з цих днів йому слід продавати волосся, щоб після закінчення всіх N днів
заробити максимальну кількість грошей. Зауважимо, що волосся у неформалу росте тільки
вночі і виростає на 1 сантиметр за ніч.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT записано ціле число N (0 < N ≤ 100). У
другому рядку через пропуск задані N натуральних чисел, що не перевищують 100,
відповідні вартості C[i] 1 сантиметра волосся за кожен i-й день.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести максимальну грошову
суму, яку може заробити неформал за N днів.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 573 31 96 24 46 380

2 101 2 3 4 5 6 7 8 9 10 100

3 1010 9 8 7 6 5 4 3 2 1 55

Варіант 33
Петя розгадує головоломку, яка влаштована в такий спосіб. Дана квадратна таблиця
розміру N×N, у кожній клітині якої записана якась англійська літера. Крім того, наведено
список ключових слів. Петі потрібно, взявши чергове ключове слово, знайти їх у таблиці.
Тобто знайти в таблиці всі букви цього слова, причому вони повинні бути розташовані
так, щоб клітина, в якій розташована кожна наступна буква слова, була сусідньою з
клітиною, в якій записана попередня буква (клітини називаються сусідніми, якщо вони
мають спільну сторону — то є сусідами по вертикалі або по горизонталі). Наприклад, на
малюнку показано, як може бути розташоване в таблиці olympiad слово.
Коли Петро знаходить слово, він викреслює його з таблиці. Використовувати вже
викреслені літери в інших ключових словах не можна. Після того, як знайдено та
викреслено всі ключові слова, у таблиці залишаються ще кілька літер, з яких Петя має
скласти слово, зашифроване в головоломці.
Допоможіть Петі у вирішенні цієї головоломки, написавши програму, яка за цією
таблицею та списком ключових слів випише, з яких літер Петя має скласти слово, тобто
які літери залишаться в таблиці після викреслення ключових слів.
Вхідні дані
У вхідному файлі INPUT.TXT записані два числа N (1 ≤ N ≤ 10) та M (0 ≤ M ≤ 100).
Наступні N рядків N заголовних англійських букв описують ребус. Наступні рядки M
містять слова. Слова складаються лише з великих англійських букв, кожне слово має
довжину від 1 до 100 символів. Гарантується, що в таблиці можна знайти та викреслити за
описаними вище правилами всі ключові слова.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть в алфавітному порядку літери, що залишилися в
таблиці.
Приклади

№ INPUT.TXT OUTPUT.TXT

5 AENRSW
1
3POLTERWYMSOAIPTBDANRLEMESOLYMPIADPROBLEMTEST

2 3 2ISQABCIQWIIS ABCQQW

Варіант 34
Як Вам стало відомо, Петя дуже любить програмувати. Нещодавно він вирішив
реалізувати популярну карткову гру "Дурань". Але у Петі поки що замало досвіду, йому
терміново потрібна Ваша допомога.
Як відомо, у «Дурака» грають колодою із 36 карт. У програмі Петі кожна карта
представляється у вигляді рядка з двох символів, де перший символ означає ранг ('6', '7',
'8', '9', 'T', 'J', 'Q', 'K') , 'A') карти, а другий символ означає масть ('S', 'C', 'D', 'H'). Ранги
перераховані у порядку зростання старшинства.
Петі необхідно вирішити наступне завдання: чи зможе гравець, володіючи набором з N
карт, відбити M карт, якими під нього зроблено хід? Для того, щоб відбитися, гравцю
потрібно покрити кожну з карт, якими під нього зроблено хід, картою зі своєї колоди.
Карту можна покрити або старшою картою тієї ж масті, або картою козирної масті. Якщо
карта, що криється сама є козирною, то її можна покрити тільки старшим козирем. Однією
картою можна покрити лише одну картку.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT знаходяться два натуральні числа N і M (N
≤ 35, M ≤ 4, M ≤ N), а також символ R, що означає козирну масть. У другому рядку
перераховані N карток, що знаходяться на руках у гравця. У третьому рядку перераховані
M карт, які необхідно відбити. Всі карти відокремлені одна від одної одним пробілом.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть "YES" у випадку, якщо можна відбитись, або
"NO", якщо не можна.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 6 2 CKD KC AD 7C AH 9C6D 6C YES

2 4 1 D9S KC AH 7D8D NO

Варіант 35
Сьогодні в космосі знаходяться сотні супутників, і всі вони обмінюються даними. При
цьому система розпізнавання сигналів працює за схемою "Свій-Чужий". Один із
супутників відправляє запит іншому супутнику у форматі двох цілих чисел, а другий
супутник відповідає першому так само двома цілими числами. Перші два числа першого
супутника є сумою цифр і кількість цифр тих двох чисел, якими повинен відповісти
другий супутник. При цьому як відповідь повинні вийти числа, що становлять найбільше і
найменше можливі значення, які можуть бути сформовані за описаним вище методом.
Ви маєте написати програму, яка формує відповідь для другого супутника за відомими
числами, отриманими від першого супутника.
Вхідні дані
У вхідному файлі INPUT.TXT записані 2 натуральні числа S і K, що представляють суму
та кількість цифр відповідно (K ≤ 100). При цьому гарантується, що можна скласти хоча б
одне K-значне число, сума цифр якого дорівнює S.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть два числа – відповідь другого супутника. При
цьому слід пам'ятати, що всі числа не мають нулів, що лідирують.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 13 100 100
2 23 200 101

3 34 3000 1002

Варіант 36
Васі вже набридли завдання на рядки! А вам? А що робити? Що ж, приступимо. Дано
рядок із маленьких букв англійського алфавіту. Дозволяється будь-який її символ зрушити
не більше, ніж на K позицій у будь-який бік так, щоб зрештою всі вони стали на різні
позиції (крім випадку, коли K=0). Наприклад, якщо рядок - aababac, а K = 2, то таким
чином можна отримати рядки abaaabc або aaaabbc, але не можна - aaacbab або aaaacbb.
Вася хоче зробити так, щоб рядок, що вийшов за допомогою такої операції, був
мінімально можливим лексикографічно (тобто розташований раніше всіх за правилами
впорядкування слів у словнику). Як йому бути?
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT встановлено число K (K ≥ 0). У другому
рядку заданий вихідний непустий рядок, довжиною не більше 100 000 маленьких
англійських букв. Гарантується, що K не перевищує довжини рядка.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть лексикографічно мінімальний із можливих
результатів.
приклад

№ INPUT.TXT OUTPUT.TXT

1 2aababac aaaabbc

Варіант 37
Петя, вивчаючи, як змінюється курс рубля стосовно долара і євро, вивів закон, яким
відбуваються ці зміни (чи думає, що вивів :) ). За цим законом Петя розрахував, яким буде
курс рубля по відношенню до долара та євро протягом найближчих N днів.
Петя має 100 рублів. У кожен із днів він може обмінювати валюти одна на одну за
поточним курсом без обмеження кількості (при цьому курс долара по відношенню до євро
відповідає величині, яку можна отримати, обмінявши долар на карбованці, а потім ці
карбованці — на євро). Оскільки Петро оперуватиме не з готівковою валютою, а з
рахунком у банку, то він може здійснювати операції обміну з будь-якою (у тому числі і
нецілим) кількістю одиниць будь-якої валюти.
Напишіть програму, яка обчислює, яку найбільшу кількість рублів зможе отримати Петя
до результату N-го дня.
Закони зміни курсів влаштовані так, що протягом зазначеного періоду карбованцевий
еквівалент тієї суми, яка може виявитися у Петі, не перевищить 108 рублів.
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить одне число N (1 ≤ N ≤ 5000). У
кожному з наступних N рядків записано по 2 числа, обчислених за Петиними законами
для відповідного дня — скільки рублів коштуватиме 1 долар і скільки рублів коштуватиме
1 євро. Всі ці значення не менше 0.01 і не більше 10000. Значення задані точно і
виражаються речовими числами не більше ніж з двома знаками після десяткової точки.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть потрібну величину з двома знаками після
десяткової точки.
приклад

№ INPUT.TXT OUTPUT.TXT

1 41 1010 5.535.53 1.256 5 4000.00

Варіант 38
Дано N цілих чисел. Кожне з них можна один раз змінити не більше ніж на цілу величину
L як у бік збільшення, так і у бік зменшення або залишити без зміни. Якщо після такої
операції деякі з чисел виявляються рівними, вони зараховуються за одне. З цими числами
здійснили вказану операцію таким чином, що залишилася мінімально можлива кількість
чисел. Потрібно написати програму визначення цієї кількості.
Вхідні дані
Вхідний файл INPUT.TXT містить у першому рядку натуральні числа L та N (N ≤ 100, L ≤
3200), у другому рядку N чисел (у діапазоні від -32768 до 32767), записаних через пробіл.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть однину – відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 10 311 21 27 1

2 5 36 10 27 2

Варіант 39
Ну не гноми, а якесь покарання! Подумала Білосніжка, вкотре намагаючись укласти
гномів спати. Одного покладеш, інший уже прокинувся! І так усю ніч. Білосніжки n
гномів, і всі вони дуже різні. Вона знає, що для того, щоб укласти спати i-го гнома
потрібно ai хвилин, і після цього він спатиме рівно bi хвилин. Допоможіть Білосніжці
дізнатися, чи може вона отримати хоча б хвилину відпочинку, коли всі гноми спатимуть, і
якщо так, то в якому порядку для цього потрібно укладати спати гномів.
Наприклад, нехай є лише два гноми, a1=1, b1=10, a2=10, b2=20. Якщо Білосніжка спочатку
почне укладати першого гнома, то потім їй буде потрібно цілих 10 хвилин, щоб укласти
другого, а за цей час прокинеться перший. Якщо ж вона почне з другого гнома, то потім
вона встигне вкласти першого та отримає цілих 10 хвилин відпочинку.
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить число n (1 ≤ n ≤ 105), другий рядок
містить числа a1, a2, . . . an, третя – числа b1, b2, . . . bn (1 ≤ ai, bi ≤ 109).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть n чисел – порядок, у якому потрібно укладати
гномів спати. Якщо Білосніжці відпочити не вдасться, виведіть −1.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 21 1010 20 21

2 210 1010 10 -1

Варіант 40
Розглянемо наступну цікаву гру для двох гравців. Для цієї гри необхідна таблиця з 2-х
рядків та N стовпців, у клітинах якої записані натуральні числа, наступного виду:

A1 A2 A3 ... AN

B1 B2 B3 ... BN

Гравці роблять ходи по черзі. Починає гру 1-й гравець.


За один хід 1-й гравець виконує такі дві дії:
вибирає довільний стовпець (наприклад, j-й), який ще жодного разу не був обраний одним
із гравців на попередніх ходах;
додає до своїх очків число Aj.
За один хід 2-й гравець виконує такі дві дії:
вибирає довільний стовпець (наприклад, j-й), який ще жодного разу не був обраний одним
із гравців на попередніх ходах;
додає до своїх окулярів число Bj.
Гра закінчується, коли якийсь із гравців не зможе зробити хід (з тієї причини, що всі
стовпці вже були обрані). Спочатку у кожного з гравців є 0 очок.
Після того, як гра закінчилася, відбувається взаєморозрахунок між гравцями. Наприклад,
перший гравець набрав S1 очок, а другий гравець - S2 очок. У разі, коли S1 > S2, 2-й
гравець віддає 1-му гравцю S1-S2 УДЕ (умовних грошових одиниць). В іншому випадку,
1-й гравець віддає 2-му гравцю S2-S1 УДЕ. З цих позицій метою 1-го гравця є
максимізація величини S1-S2, а метою 2-го гравця - максимізація S2-S1.
Назвемо вартістю гри величину S1-S2 за оптимальної гри обох гравців. Напишіть
програму, яка визначає вартість гри.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT записано натуральне число N - кількість
стовпців у таблиці (1 ≤ N ≤ 300 000). Наступні N рядків описують числа у стовпцях
таблиці. i-я з цих рядків містить два натуральні числа Ai та Bi, розділені одним пропуском
(1 ≤ Ai, Bi ≤ 3000).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть одне ціле число – вартість гри.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 11 1 1

2 21 11 1 0

3 31 23 45 6 2

Варіант 41
Нещодавно Вася придбав настільний калькулятор із рідкокристалічним індикатором. Цей
індикатор відображає цифр N за допомогою N однакових елементів.

Зазначимо, кожен елемент містить сім смужок, кожна з яких може бути або білою, або чорною.
Зокрема, під час відображення цифри «1» чорними є дві смужки.

Вася – дуже допитливий хлопчик, тому він хоче дізнатися, яке максимальне та мінімальне N-
значне число може бути відображено на індикаторі його нового калькулятора так, щоб чорними
були рівно K смужок.
Напишіть програму, яка знайде відповідь на Васін питання. Зважайте на те, що числа не можуть
містити провідні нулі.

Вхідні дані

Вхідний файл INPUT.TXT містить два натуральні числа N і K (1 ≤ N ≤ 100, 1 ≤ K ≤ 700).

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть мінімальне число, у другому рядку
вихідного файлу виведіть максимальне число. Якщо вказаним чином не може бути представлено
жодне число, вихідний файл має містити один рядок NO SOLUTION.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 5 15 1011797111

2 10 1 NO SOLUTION

Варіант 42
Для зберігання двох агресивних рідин A і B використовується ємність з багатошаровою
перегородкою, яка виготовляється з наявних листів N. Для кожного листа i (i = 1, …, N) відомий час
його розчинення рідиною A – ai та рідиною B – bi. Розчинення перегородки кожної рідини
відбувається послідовно лист за листом, з постійною швидкістю по товщині листа.

Потрібно написати програму проектування такої перегородки, час розчинення якої було б
максимальним.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT записано число N (1 ≤ N ≤ 256). У кожному з наступних
N рядків містяться два позитивні речові числа ai і bi, розділені пробілом (числа не перевищують
106 і складаються не більше ніж з 11 значущих цифр).

Вихідні дані

У перший рядок вихідного файлу OUTPUT.TXT записати час розчинення перегородки з точністю не
менше 10-3. У наступному рядку файлу записати номери аркушів у порядку їх розташування від
рідини A до рідини B, розділяючи числа пробілами.

приклад

№ INPUT.TXT OUTPUT.TXT

1 41 21 20.5 1.57 3.5 6.0004 2 1 3

Варіант 43
У багатьох фірмах, які займаються торгівлею, існує посада менеджера із закупівель. Як відомо,
вони займаються тим, що за торговим планом, що є список найменувань товарів, для кожного з
яких зазначена необхідна кількість, закуповує зазначені в ньому товари на оптових базах.
Торговий план у своїй складається керівництвом компанії. Іноді у менеджерів із закупівель
виникає бажання принести вигоду не тільки своїй фірмі, а й собі.

Щойно, якраз після підписання чергового торговельного плану на замовлення n найменувань


товарів відкрилася нова оптова база. Як це часто буває відразу після відкриття, її ціни на багато
товарів нижчі від закладених у план. Напевно, це можна скористатися.

На закупівлю товарів було виділено гроші з розрахунку того, що всі товари закуповуватимуться на
старій оптовій базі. Менеджер хоче, скориставшись можливістю купувати товари на новій базі,
витратити якнайменше грошей на закупівлю необхідної кількості товарів (не витрачені гроші він,
звичайно, зможе забрати собі).

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

Вхідні дані

Перший рядок містить чотири числа: n (1 ≤ n ≤ 1000), d, а також k1 і k2 (1 ≤ k1, k2 ≤ 1000) - кількості
найменувань товарів, наявних на відкритих раніше та новій базі відповідно. Після цього йдуть n
рядків, кожен з яких містить назву товару в плані та його кількість (позитивне речове число). За
ними слідують два блоки з k1 та k2 рядків відповідно, відокремлені від попереднього та розділені
між собою переведенням рядка - найменування товарів на базах та ціни за одиницю товару
відповідно. Усі ціни є позитивними числами навіть на новій базі.

Назви товарів складаються з не більше 100 англійських літер і символів підкреслення, при цьому
регістр літер не враховується. Речові числа задані лише з двома знаками після десяткової точки і за
величиною не перевищують 106. Гарантується, що всі товари з плану можна купити на старій базі.
Вважайте, що будь-який товар на будь-якій базі можна купувати в будь-якій дробовій кількості, а
також що при оплаті можна використовувати будь-яку кількість грошових одиниць.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть n дійсних чисел, по одному на рядку, що задають кількість
відповідного товару, що закуповується на новій базі. На першому рядку виведіть кількість товару,
що йде першим у плані. Помилки менше 0.01 ігноруватимуться.

приклад

№ INPUT.TXT OUTPUT.TXT

4 11.00 5 4Salt 3 2.00000.50000.00000.0000


suGar 0.5
1 Powdered_MilK 7
fLoUR 8

flOuR 1
CINNAmOn 8
saLt 0.5
SuGAr 20
poWdErED_MILk 3

FLOur 2SALT 0.4


liQUID_HydRoGen 10000
sUgAR 10

Варіант 44
Антон працює кур'єром. Має багато замовлень. На виконання одного замовлення у Антона йде
рівно один день. Для кожного замовлення визначено вартість та термін його виконання (кількість
днів, що залишилися до запланованого дня виконання замовлення). Якось прокинувшись, Антон
вивчив свій графік і зрозумів, що, можливо, він не зможе виконати всі замовлення, і його можуть
звільнити. Тому він вирішив виконати лише деякі з них так, щоб отримати максимальний дохід.

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить ціле число N (1 ≤ N ≤ 1000) – кількість замовлень.
Потім у N рядках описані дані кожного замовлення Ti та Ci (натуральні числа, що не перевищують
105). Де Ti – останній день, коли ще можна виконати замовлення, Ci – винагорода за виконання
замовлення.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть максимальну винагороду, яку можна отримати, виконуючи
замовлення.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 21 102 12 22

2 31 101 203 24 44

Варіант 45
Тітка Люба щойно випрала всю білизну і тепер перед нею стоїть непросте завдання - як її
висушити, щоб жодна річ не встигла зіпсуватися. Відразу після прання, i-я випрана річ має
вологість wi. Якщо вона сушиться на мотузці, то за хвилину її вологість зменшується на 1, а якщо на
батареї - то на r (якщо вологість була меншою за r, то вона дорівнює 0). Причому мотузок у тітки
Люби багато (вистачає для одночасного сушіння всіх речей), а батарея тільки одна, причому така
маленька, що на ній не можна сушити дві речі одночасно. i-я річ зіпсується, якщо не висохне за час
di. Допоможіть тітці Любе скласти план, коли якусь річ повісити на батарею.

Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить цілі числа n (1 ≤ n ≤ 105) - кількість мокрих речей, і
r (1 ≤ r ≤ 109). Наступні n рядків містять описи випраних речей – пари чисел wi та di (1 ≤ wi, di ≤ 109).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть план сушіння у вигляді пар цілих чисел ti та ki, де ti – час у
хвилинах від початку сушіння, а ki – номер речі, яку потрібно повісити на батарею в цей момент.
Виводьте пари у порядку збільшення ti. Пара не повинна бути більше 105. Не виводьте числа
більше 109. Якщо висушити всі речі неможливо, виведіть слово "Impossible".

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 32000 10002000 20002500 1500 0 3500 11000 3

2 3 32000 10002000 10002000 1000 Impossible

Варіант 46
У зв'язку з проведенням міжпланетного шашкового турніру було ухвалено рішення про
будівництво орбітального готелю. Вона повинна була являти собою великий куб із N×N×N блоків –
маленьких кубиків 1×1×1, і кожен блок мав бути пофарбований зовні з усіх боків у якийсь один
колір. При цьому деякі блоки могли бути пофарбовані в той самий колір.

Через рік було зроблено фотографії готелю з кожної із 6 сторін: спереду, ліворуч, ззаду, праворуч,
зверху, знизу. За рік експлуатації могло статися так, що через неміцне кріплення деякі блоки, з
яких було збудовано готель, відірвалися і відлетіли у відкритий космос. Комісія з відновлення
готелю хоче за зробленими знімками встановити максимальну можливу кількість блоків, що
залишилися.

Отже, вам необхідно за видами готелю (куба N×N×N, з якого, можливо, викинуто деякі кубики
1×1×1) з 6 сторін визначити, з якої максимальної кількості блоків 1×1×1 він може складатися. Може
виявитися так, що готель складається із двох або більше не пов'язаних між собою частин.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT знаходиться число N – розмір готелю (1≤N≤10). На
наступних N рядках записані види готелю з шести сторін (у наступному порядку: спереду, ліворуч,
ззаду, праворуч, зверху, знизу). Кожен такий вид є таблицею N×N, у якій різними великими
англійськими літерами позначені різні кольори, а символом «.» (Точка) - те, що в цьому місці
можна буде дивитися прямо крізь готель. Два послідовні види відокремлюються один від одного
рівно одним пропуском у кожному з N рядків.

Нижня межа виду зверху відповідає верхній межі виду спереду, а верхня межа виду знизу -
нижній межі виду спереду. Для видів спереду, ззаду та з боків верх і низ виду відповідають верху
та низу готелю.

Вхідні дані є коректними, тобто у вхідному файлі описано стан, який може вийти.

Вихідні дані
Виведіть у вихідний файл OUTPUT.TXT одне число — максимальна кількість блоків, що залишилися
в готелі.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3.R. YYR. RYY. .R.GRB YGR BYG RBY GYB GRB.R. YRR. RRY. .Y. 11

2 2ZZ ZZ ZZ ZZ ZZ ZZZZ ZZ ZZ ZZ ZZ ZZ 8

Варіант 47
Толик вигадав нову технологію програмування. Він хоче умовити друзів використати її. Але все не
так просто. i-й друг погодиться використовувати технологію Толіка, якщо його авторитет буде не
меншим за ai (авторитет виражається цілим числом). Як тільки він почне її використовувати, до
авторитету Толіка додасться число bi (трапляються люди, у яких bi < 0). Допоможіть Толіку
наставити на правдивий шлях якомога більше своїх друзів.

Вхідні дані

На першому рядку вхідного файлу INPUT.TXT містяться два числа: n (1 ≤ n ≤ 1000) – кількість друзів
у Толіка та початковий авторитет Толіка . Наступні рядки n містять пари чисел ai і bi. Усі числа цілі,
за модулем не більше 106.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть число m – максимальну кількість друзів, яких може захопити
Толік, а потім m чисел – номери друзів у тому порядку, в якому їх потрібно агітувати.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 5 11 36 -56 -42 22 -1 41 4 3 5

Варіант 48
По колу стоїть N коробок. Кожна коробка має одного правого та одного лівого сусіда. У i-ій коробці
знаходиться Ai куль. Відомо, що загальна кількість куль у всіх коробках не перевищує N. За один
хід дозволяється перекласти одну кулю із коробки в сусідню. Яку найменшу кількість ходів
доведеться здійснити, щоб у кожній коробці знаходилося не більше однієї кулі?

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить ціле число N (1 ≤ N ≤ 1000). У другому рядку
визначено послідовність N цілих чисел A1, A2, ..., AN (0 ≤ Ai ≤ N). Сума всіх значень Ai вбирається у
N.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть потрібну мінімальну кількість ходів.


приклад

№ INPUT.TXT OUTPUT.TXT

1 71 0 0 0 2 3 1 7

Варіант 49
Задано натуральне число N. Потрібно написати програму, яка обчислює кількість різних
тризначних чисел, що виходять з N, викресленням цифр з його десяткового запису.

Вхідні дані

Вхідний текстовий файл INPUT.TXT містить одне натуральне число N (1 ≤ N ≤ 10100).

Вихідні дані

Вихідний текстовий файл OUTPUT.TXT повинен містити одне ціле число – знайдену кількість
трицифрових чисел.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 12 0

2 11111111111100111111111 4

Варіант 50
Вказано натуральне число x. Знайдіть число способів подати його у вигляді суми чотирьох
натуральних чисел: x = a + b + c + d, де a ≤ b ≤ c ≤ d.

Вхідні дані

Вхідний файл INPUT.TXT містить ціле число x (1 ≤ x ≤ 1500).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 0

2 5 1
Варіант 51
Задано дві клітинки шахівниці. Потрібно визначити, чи можливо потрапити з однієї клітини до
іншої одним ходом шахового коня, а якщо ні, то слід з'ясувати, чи можливо потрапити за
допомогою двох ходів.

Вхідні дані

Вхідний файл INPUT.TXT містить координати двох клітин у загальноприйнятому форматі: кожна
координата записується як англійська рядкова літера та цифра, координати відокремлені один від
одного комою та пробілом.

Вихідні дані

Вихідний файл OUTPUT.TXT повинен містити цифру «1», якщо можливо з однієї клітини в іншу
потрапити за 1 хід, або цифру «2», якщо потрапити можна за 2 ходи, або «NO», якщо одна клітина
недосяжна з іншої ні за 1 ні за 2 ходи.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 a1, h8 NO

2 a1, b3 1

3 a1, d4 2

Варіант 52
Іван працює на заводі, який виготовляє важку техніку. Його робота дуже проста – він збирає
коробки та пакує в них техніку для замовників. Кожна така коробка є паралелепіпедом. Для
збирання коробки Іван використовує шість прямокутних дерев'яних плиток. Кожна плита є однією
зі сторін коробки.

Петро підбирає плитки для Івана. Петро недостатньо розумний і тому часто припускається
помилок – він приносить Івану такі плитки, з яких неможливо зібрати коробку. Але Іван не довіряє
Петру. Тому він завжди витрачає багато часу на те, щоб пояснити Петру те, де він припустився
помилки.
На щастя, Петро любить усе, що з комп'ютерами і вірить у те, що комп'ютери будь-коли
помиляються. Іван вирішив, що можна використати це у їхній роботі. Іван попросив Вас написати
програму, яка за заданими розмірами шести плиток скаже: чи можливо збудувати з них коробку.

Вхідні дані

Вхідний файл INPUT.TXT містить шість рядків, кожен з яких містить два натуральні числа w і h (1 ≤
w, h ≤ 10 000) – ширина та висота плити в міліметрах.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть «POSSIBLE», якщо можна зібрати коробку з цих плит, і
«IMPOSSIBLE» в іншому випадку.

Приклади

№ INPUT.TXT OUTPUT.TXT

1345 25842584 6832584 1345683 1345683 POSSIBLE


1
13452584 683

1234 45671234 45674567 43214322 45674321 IMPOSSIBLE


2
12344321 1234

Варіант 53

Гра в дартс дуже популярна у Великій Британії та Голландії. У грі беруть участь кілька гравців. Вони
по черзі кидають у ціль по три дротики.

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

Зовнішній вигляд мішені показаний малюнку праворуч. Вона поділена на 20 секторів, що


розташовані навколо невеликого центрального кола. Це коло, своєю чергою, ділиться на
внутрішню і зовнішню частину (іноді внутрішня частина називається «яблучко»). Попадання у
зовнішню частину центрального кола оцінюється 25 очок, а в «яблучко» – удвічі більше, тобто у 50
очок. Вартість сектора дорівнює числу, що на ньому написано. Крім того на мішені виділено два
кільця - зовнішнє та внутрішнє. Потраплення в них оцінюється відповідно в два і втричі більше, ніж
у частину відповідного сектора, що залишилася.

Існують додаткові правила для останньої серії кидків, у якій гравець має досягти нуля очок. У цій
серії гравцеві доведеться кинути в ціль від одного до трьох дротиків. Гравець повинен досягти
точності нуля очок, отримання негативної суми вважається помилкою. Останній дротик має бути
«подвійним», тобто потрапити у зовнішнє кільце будь-якого сектора або в «яблучко» - (воно
вважається подвоєнням зовнішньої частини центрального кола).

Наприклад, один із правильних способів закінчити гру, маючи 50 очок – кинути дротики у «18» та
«D16».

Способи D20, 10, або 20, T10 не підходять: останній кидок не є подвоєним. Ще один можливий
спосіб перемогти в цьому випадку – просто потрапити до «яблучка» («Bull»). За кількістю очок, що
залишилися, знайдіть всі способи правильно закінчити гру.

Вхідні дані

Вхідний файл INPUT.TXT містить число n - кількість очок, що залишилися (1 ≤ n ≤ 200).

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть k – кількість способів правильно


завершити партію. Кожен із наступних k рядків повинен містити опис одного правильного способу.
При цьому число від 1 до 20 відповідає влученню у відповідний сектор. Літера «D» перед числом
позначає попадання у зовнішнє (подвоює) кільце, а «T» - у внутрішнє (потроює). Зовнішня частина
центрального кола позначається як "25", а "яблучко" (bull eye) - словом "Bull".

приклад

№ INPUT.TXT OUTPUT.TXT

1 5 71 D1 D11 2 D11 D2D1 1 D1T1 D12 1 D13 D1

Варіант 54
Описано рекурсивну функцію з трьома параметрами F(a, b, c):

якщо a ≤ 0 або b ≤ 0 або c ≤ 0, то F(a, b, c) = 1

якщо a > 20 чи b > 20 чи c > 20, то F(a, b, c) = F(20, 20, 20)

якщо a < b та b < c, то F(a, b, c) = F(a, b, c-1) + F(a, b-1, c-1) - F(a, b-1) , c)

інакше F(a, b, c) = F(a-1, b, c) + F(a-1, b-1, c) + F(a-1, b, c-1) - F(a -1, b-1, c-1)

Однак, якщо вказану функцію реалізувати безпосередньо, то навіть для невеликих значень a, b та c
(наприклад, a = 15, b = 15, c = 15), програма працюватиме кілька годин! Необхідно реалізувати
ефективний алгоритм обчислення функції F, який встигне знайти будь-яке значення менш ніж за
одну секунду!

Вхідні дані
Вхідний файл INPUT.TXT містить три цілі числа a, b, c - параметри функції F (-104 ≤ a, b, c ≤ 104).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть значення функції F(a, b, c).

Приклади

№ INPUT.TXT OUTPUT.TXT

1 111 2

2 222 4

3 10 4 6 523

4 50 50 50 1048576

Варіант 55
Вася навчається у третьому класі і зараз він проходить тему «Прості дроби з натуральними
чисельниками та знаменниками». Виявляється, що дріб називається правильним, якщо його
чисельник менший за знаменник, і нескоротний, якщо чисельник і знаменник є взаємно простими.
Вася дуже любить математику і тому вдома він вирішує багато завдань. В даний момент Вася
шукає найбільший правильний нескоротний дріб, у якого сума чисельника і знаменника дорівнює
N.

Потрібно написати програму, яка допоможе Васі вирішити це завдання.

Вхідні дані

Вхідний файл INPUT.TXT містить одне ціле число N (3 ≤ N ≤ 2∙109).

Вихідні дані

Вихідний файл OUTPUT.TXT повинен містити два числа - чисельник і знаменник знайденого дробу,
розділені пропуском.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3 12

2 10 37

Варіант 56
У багатьох книгах з цікавої математики наводиться таке завдання. Розставити по периметру
трикутної кімнати 3 стільці так, щоб у кожної стіни стояло по 2. Її рішення - поставити по стільці в
кожен із кутів кімнати.
Це завдання легко узагальнюється. Нехай кімната є трикутником ABC. Дані: загальна кількість
стільців n, кількість стільців nAB, що має стояти біля стіни AB, кількість стільців nBC, що має стояти
біля стіни BC, кількість стільців nAC, що має стояти біля стіни AC. Необхідно знайти відповідне
розташування стільців або встановити, що її не існує. При цьому стільці можна ставити тільки в
кути кімнати і вздовж стін, центр кімнати стільці ставити не можна. У будь-який з кутів можна
поставити довільну кількість стільців.

Вхідні дані

Вхідний файл INPUT.TXT містить цілі числа n, nAB, nBC, nAC (0 ≤ n, nAB, nBC, nAC ≤ 1000).

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть NO, якщо стільці вказаним способом
розставити неможливо. В іншому випадку виведіть YES у першому рядку вихідного файлу, а у
другому виведіть 6 цілих невід'ємних чисел: kA, kAB, kB, kBC, kC, kAC - відповідно кількість стільців,
які необхідно поставити в кут A, вздовж стіни AB, у кут B , вздовж стіни BC, у кут C і вздовж стіни AC.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3222 YES1 0 1 0 1 0

2 3322 NO

Варіант 57
Дослідницька лабораторія однієї відомої автомобільної компанії розробила спеціальний механізм,
що дозволяє підвищити ефективність гальм шляхом рівномірного навантаження деталей, що
використовуються у гальмах.

Одним з основних компонентів механізму є дві прокладки, які в процесі взаємодії накладаються
один на одного. Кожна прокладка довжини n розділена на n розділів, кожен із яких має висоту h
або 2h. Таким чином, прокладки мають зубчасту форму без заокруглень.

У процесі взаємодії прокладок важливо, щоб вони накладалися один на одного і при цьому
загальна довжина з'єднання, що вийшло, була найменшою.
За заданою конфігурацією прокладок потрібно визначити найменшу довжину можливого
з'єднання, при якому загальна висота конструкції не перевищує значення 3h. При цьому обертати
прокладки та видаляти зубці заборонено.

Вхідні дані

Вхідний файл INPUT.TXT містить 2 рядки з описом конфігурації 2х прокладок. Кожна конфігурація
визначається послідовністю цифр 1 та 2, що відповідають висоті кожного зубця прокладки. Кожен
із рядків не порожній і має довжину, що не перевищує 100.

Вихідні дані

У вихідний файл OUTPUT.TXT потрібно вивести найменшу довжину конструкції із заданих


прокладок.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 21121121122212112 10

2 1212121221212121 8

3 221122112221212 15

Варіант 58
У Вас є N каменів з масами W1, W2, … WN. Потрібно розкласти каміння на 2 купки так, щоб різниця
мас цих купок була мінімальною.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT записано число N – кількість каменів (1 ≤ N ≤ 18). У
другому рядку через пропуск перераховані маси каменів W1, W2, … WN (1 ≤ Wi ≤ 105).

Вихідні дані

У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести одне невід'ємне ціле число –
мінімально можливу різницю між масами двох купок.

приклад

№ INPUT.TXT OUTPUT.TXT

1 55 8 13 27 14 3
Варіант 59
Назвемо перестановку з N чисел 1…N K-перестановкою, якщо будь-які два сусідніх у ній елементи
відрізняються трохи більше, ніж K.

Потрібно знайти число K-перестановок N чисел від 1 до N.

Вхідні дані

Вхідний файл INPUT.TXT містить натуральні числа N та K (K ≤ N ≤ 9).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть ціле число – відповідь на завдання.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 31 2

2 42 12

Варіант 60
Легіон - основна організаційна одиниця в армії Стародавнього Риму. У різний час легіони мали
різну чисельність та різну побудову. Найпростішою побудовою була шеренга. Щоб з N солдатів
легіону, вишикуваних у шеренгу, відібрати трьох у розвідку, виконувались такі операції: якщо
солдатів у шерензі більше трьох, то шеренга розбивалася на дві, одна з яких складається з
солдатів, що стоять на парних позиціях, а друга – зі стоять на парі. непарних позиціях. Для всіх
отриманих шеренг ця процедура повторювалася до того часу, поки кожної з них залишиться трохи
більше трьох солдатів. Якщо солдатів залишилося троє, то цю групу можна надіслати до розвідки.

Потрібно визначити, скільки груп по три особи може бути сформовано із вихідної шеренги.

Вхідні дані

Вхідний файл INPUT.TXT містить єдине ціле число N - кількість солдатів у шерензі (0 ≤ N ≤ 1018).
Вихідні дані

У вихідний файл OUTPUT.TXT виведіть одне ціле число – кількість груп по три особи, сформованих
із вихідної шеренги.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 10 2

2 4 0

Варіант 61
Дано рядок, що складається з N попарно різних символів. Потрібно вивести всі перестановки
символів цього рядка.

Вхідні дані

Вхідний файл INPUT.TXT містить рядок, що складається з N символів (1 ≤ N ≤ 8), символи – літери
англійського алфавіту та цифри.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть у кожному рядку за однією перестановкою. Перестановки


можна виводити у будь-якому порядку. Повторень і рядків, які є перестановками вихідної, не
повинно бути.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 AB ABBA

2 IOX XOIOIXIXOXIOOXIIOX

Варіант 62
Марсіяни Мишко та Маша вирішили разом підібрати подарунок на день народження Каті. Коли
вони нарешті знайшли те, що хотіли, та запакували предмет у гарну коробку, треба було вирішити,
як підписати подарунок. Друзі подумали, що найкращим рішенням буде скласти загальний підпис
так, щоб у ньому як підрядки містилися їхні імена.

Майте на увазі, що на Марсі прийнято підписуватися повними іменами, а вони у марсіан можуть
бути досить довгими.

Вхідні дані

Вхідний файл INPUT.TXT містить два рядки, де записані повні імена друзів. Імена, як не дивно,
складаються з літер англійського алфавіту, з яких тільки перша - велика. Довжина імен від 1 до
1000 символів.
Вихідні дані

У вихідний файл OUTPUT.TXT виведіть найкоротший рядок, у якому зустрічаються імена Миші та
Маші одночасно. Літери, з яких імена починаються в цьому рядку, потрібно зробити великими.
Якщо існує кілька рішень, виведіть те, яке менше в алфавітному порядку (слід вважати, що будь-
яка буква у верхньому регістрі менша, ніж будь-яка буква в нижньому регістрі).

Приклади

№ INPUT.TXT OUTPUT.TXT

1 MishaMasha MashaMisha

2 JulyaLyalya JuLyalya

Варіант 63
Король Флатландії вирішив вирубати деякі дерева, що ростуть перед палацом. Дерева перед
палацом короля посаджені в ряд, всього там росте дерев, відстані між сусідніми деревами
однакові.

Після вирубки перед палацом має залишитися m дерев, і відстані між сусідніми деревами мають
бути однаковими. Допоможіть королю з'ясувати, скільки існує способів вирубування дерев.

Потрібно написати програму, яка за заданими числами n і m визначить, скільки існує способів
вирубування деяких з n дерев так, щоб після вирубки залишилося m дерев і сусідні дерева
знаходилися на рівній відстані один від одного.

Вхідні дані

Вхідний файл INPUT.TXT містить два цілих числа n і m (0 ≤ m, n ≤ 1000).

Вихідні дані

У єдиний рядок вихідного файлу OUTPUT.TXT необхідно вивести одне ціле число - кількість
способів.

приклад

№ INPUT.TXT OUTPUT.TXT

1 53 4

Пояснення наприклад

Якщо умовно визначити вихідне розташування дерев перед палацом як «TTTTT», то можливі
результати після вирубки такі:

"TTT..", ".TTT.", "..TTT", "TTT".


Варіант 64
Дано рядок, що складається із N символів. Потрібно вивести всі перестановки символів цього
рядка.

Вхідні дані

Вхідний файл INPUT.TXT містить рядок, що складається з N символів (1 ≤ N ≤ 8), символи – літери
англійського алфавіту та цифри.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть у кожному рядку за однією перестановкою. Перестановки


можна виводити у будь-якому порядку. Повторень і рядків, які є перестановками вихідної, не
повинно бути.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 AB ABBA

2 122 122212221

Варіант 65
Задано три числа: a, b, c. Необхідно з'ясувати, чи можна переставити цифри в числах a і b, щоб у
сумі вийшло c.

Вхідні дані

Вхідний файл INPUT.TXT містить три цілі числа: a, b, c (0 ≤ a, b, c < 109). Числа розділені пробілом.

Вихідні дані

У вихідний файл OUTPUT.TXT слід вивести YES, якщо потрібна перестановка цифр можлива, інакше
необхідно вивести NO. При позитивній відповіді у другому рядку слід вивести число x, що
отримується перестановкою цифр числа a, та число y, яке отримується перестановкою цифр числа
b, сума яких дорівнює c. Числа x та y при виведенні не повинні містити провідних нулів. Числа у
рядку розділені пробілом. Якщо рішень кілька, слід вивести ту пару, у якій число x мінімально.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 12 31 25 YES12 13

2 12 31 26 NO

3 101 2 13 YES11 2
Варіант 66
Усі ми в дитинстві грали у кубики. Були в нас і кубики з цифрами, і кубики з літерами. Були також
різнокольорові кубики. Маленький Андрійко теж любить грати в кубики. Він має кілька наборів
кубиків, причому всі кубики з одного набору розфарбовані однаково, а кубики з різних наборів -
по-різному.

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

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить опис першого кубика у форматі: колір передньої
грані, колір задньої грані, колір верхньої грані, колір нижньої грані, колір лівої грані, колір правої
грані. У другому рядку міститься опис другого кубика в такому ж форматі. Кольори граней
кодуються числами. Усі числа у вхідному файлі - цілі, позитивні і не перевищують 100.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть YES, якщо перший і другий кубики належать одному набору,
і NO - в іншому випадку.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 1 2 3 4 5 61 2 3 4 5 6 YES

2 1 2 3 4 5 61 1 1 1 1 1 NO

3 1 2 3 4 5 65 6 3 4 2 1 YES

Варіант 67
Перестановкою P[1..n] розміру n називається набір чисел від 1 до n, розташованих у
порядку. При цьому в ньому має бути рівно один раз кожне з цих чисел. Прикладом
перестановок є 1,3,4,5,2 (n=5) і 3,2,1 (n=3), а, наприклад, 1,2,3,4,5,1 перестановкою не є,
оскільки число 1 зустрічається двічі.
Число i називається нерухомою точкою для перестановки P, якщо P[i] = i. Наприклад, у
перестановці 1,3,4,2,5 рівно дві нерухомі точки: 1 і 5, а перестановка 4,3,2,1 не має
нерухомих точок.
Дано два числа: n і k. Знайдіть кількість перестановок розміру n із рівно k нерухомими
точками.
Вхідні дані
Вхідний файл INPUT.TXT містить два цілих числа n (1 ≤ n ≤ 9) і k (0 ≤ k ≤ n).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT

1 52 20

2 96 168

3 21 0

4 90 133496

Варіант 68
Наближається Новий Рік, і в магазинах починають з'являтися різні прикраси. На прилавках
можна побачити різні кульки, шишечки, зірочки, але найкрасивішою прикрасою є гірлянда
з різнокольорових лампочок. Одна з фірм, яка займається виготовленням ялинкових
прикрас, вирішила цього року виготовляти гірлянди на замовлення.
Гірлянди, що виготовляються цієї фірми, складаються з лампочок різних кольорів,
з'єднаних проводами. Усього в гірлянді n лампочок, кожна з яких пофарбована в один з k
кольорів, і m проводів (кожен провід з'єднує рівно дві лампочки). Далі ми вважатимемо, що
лампочки пронумеровані натуральними числами від 1 до n.
На жаль, не кожний дизайн гірлянди відповідає естетичним поглядам замовників. По-
перше, лампочки, з'єднані одним проводом повинні бути різного кольору, по-друге, сама
конфігурація гірлянди (тобто те, які лампочки і як з'єднані проводами) не може бути будь-
якою.
Один із відділів фірми вже провів дослідження та знайшов найбільш «вдалу» конфігурацію.
Ваше ж завдання полягає в тому, щоб знайти число способів розфарбувати лампочки, щоб
гірлянда, що вийшла, задовольняла естетичним поглядам замовників.
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить три цілих числа: n, k, m (1 ≤ n, k ≤ 8, 0 ≤
m ≤ 10). Наступні m рядків описують дроти. Опис кожного дроту складається з двох чисел
u та v (1 ≤ u, v ≤ n, u ≠ v) – номерів лампочок, з'єднаних цим дротом.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.
Приклади

№ INPUT.TXT OUTPUT.TXT
1 2 2 11 2 2

2 440 256

3 4 4 61 21 31 42 32 43 4 24

Варіант 69
Деякі набори з n слів довжини n мають цікаву властивість - їх можна розташувати в клітинах
квадрата n×n так, що всі слова набору можна прочитати як у вертикалі, так і по горизонталі.
Приклад такого набору слів є {"DATE", "FIND", "IDEA", "NEXT"}. Їх можна розмістити
так:

Зверніть увагу, що кожне слово можна прочитати як по горизонталі, так і по вертикалі. Такі
квадрати називаються словниковими квадратами, найбільший відомий словниковий
квадрат англійською мовою має розмір 10×10.
Розглянемо ще один приклад словникового квадрата:

Вам дано такі 2n слів, що з них можна побудувати два різні словникові квадрати розміру
n×n. Ваше завдання полягає в тому, щоб розбити ці слова на дві групи, за n слів у кожній, і
побудувати зі слів кожної групи словниковий квадрат.
Гарантується, що всі дані слова є англійськими словами (деякі з них можуть бути досить
рідкісними словами, іменами, або спеціальними термінами).
Вхідні дані
Перший рядок вхідного файлу INPUT.TXT містить ціле число n (2 ≤ n ≤ 10). Кожен із
наступних 2n рядків містить слово, що складається з великих літер англійського алфавіту.
Кожне слово містить рівно n букв.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть два словникові квадрати, побудовані з даних слів.
Розділіть квадрати порожнім рядком.
приклад
№ INPUT.TXT OUTPUT.TXT

4ARTSBESTCRABDATEFIND CRABRAREARTSBEST
IDEANEXTRARE
1
FIND
IDEANEXTDATE

Варіант 70
Студент Діма навчається на другому курсі університету. На другому курсі у його університеті
читається курс математичної логіки. У цьому курсі особлива увага наголошується на автоматичних
доказниках – програмах, що дозволяють за їх допомогою доводити різні складні теореми.

Курсова робота з математичної логіки у Діми така: необхідно довести за допомогою


автоматичного доказника HOL, що шахівницю розміром 2N x 2N, з якої вирізана одна клітина,
можна покрити в один шар куточками з трьох клітин.

Діма не вірить у те, що це правда, і намагається скласти контрприклад. Ваше завдання довести
Дімі, що він неправий, і вирішити завдання для вхідних даних Димина.

Вхідні дані

Вхідний файл INPUT.TXT містить три натуральні числа N, X, Y (N ≤ 6; X, Y ≤ 2N). Цими числами задана
дошка 2N x 2N, з якої вирізано клітину з координатами (X, Y). X - координата по горизонталі, Y - по
вертикалі, (1, 1) - лівий верхній кут дошки.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть 2N рядків по 2N чисел – номери куточків, що покривають


відповідні клітини. Кожен куточок має свій унікальний номер. Кути пронумеровані починаючи з
одиниці, без перепусток. Вирізану клітину слід позначити банкрутом.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 111 0 11 1

2 222 2 2 3 32 0 1 34 1 1 54 4 5 5

Варіант 71
Декілька людей вирішили поїхати відпочити на природі, подихати свіжим повітрям тощо. Як це
часто буває, деякі з них дружать один з одним, а деякі – ні. Щоб не зіпсувати нікому настрій, вони
вирішили розділитися на кілька груп. При цьому в кожній групі має бути не більше 5 осіб і вони
повинні дружити один з одним.

Знайдіть таке розбиття людей на групи, в якому розмір найбільшої групи був би максимальним
(серед усіх розбиття).
Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить ціле число n (1 ≤ n ≤ 15) - кількість людей.
Наступні n рядків містять n чисел. Якщо i-ий і j-ий люди дружать, то j-е число i + 1-го рядка
дорівнює 1, інакше - 0.

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть кількість груп. У другому рядку вихідного
файлу виведіть n чисел (і число - номер групи, в якій знаходиться перша людина). Так як у будь-
якому випадку кількість груп не перевищить n, нумеруйте групи цілими числами від 1 до n. Якщо
рішень кілька, виведіть будь-яке.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 31 1 01 1 00 0 1 21 1 2

81 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 11 1 1 1 1 31 1 1 1 1 2 2 3
2
1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Варіант 72
Одним із класичних NP-повних завдань є так зване «Завдання про рюкзак». Формулюється вона в
такий спосіб. Дано n предметів, кожен з яких характеризується вагою wi та корисністю pi.
Необхідно вибрати деякий набір цих предметів так, щоб сумарна вага цього набору не
перевищувала W, а сумарна корисність була максимальною.

Ваше завдання полягає в тому, щоб написати програму, яка вирішує завдання про рюкзак.

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить натуральні числа n (1 ≤ n ≤ 20) та W (1 ≤ W ≤ 109).
Кожен із наступних n рядків містить опис одного предмета. Кожен опис складається з двох чисел:
wi – ваги предмета та pi – його корисності (1 ≤ wi, pi ≤ 109).

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть кількість вибраних предметів та їхню
сумарну корисність. У другому рядку виведіть через пробіл їх номери у порядку, що зростає
(предмети нумеруються з одиниці в порядку, в якому вони перераховані у вхідному файлі).

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

Приклади
№ INPUT.TXT OUTPUT.TXT

1 2 1010 1009 80 1 1001

2 5 10080 100050 55050 55050 55050 550 2 11002 3

6 10080 100050 55050 55050 55050 550100 1 11006


3
1100

Варіант 73
У чарівній країні використовуються монетки номіналом A1, A2,..., AM. чарівний чоловічок прийшов
у магазин і виявив, що він має рівно по дві монетки кожної гідності. Йому потрібно заплатити суму
N. Напишіть програму, яка визначає, чи зможе він розплатитися без здачі.

Вхідні дані

У вхідному файлі INPUT.TXT записано спочатку число N (1 ≤ N ≤ 109), потім - число M (1 ≤ M ≤ 15) і
далі M попарно різних чисел A1, A2,..., AM (1 ≤ Ai ≤ 109 ).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть кількість монет, яку доведеться віддати чарівній людині,
якщо вона зможе заплатити вказану суму без здачі. Якщо рішень кілька, виведіть варіант, у якому
чарівна людина віддасть найменшу кількість монет. Якщо без здачі не обійтися, то виведіть одне
число 0. Якщо ж у чарівного чоловічка не вистачить грошей, щоб заплатити вказану суму, виведіть
одне -1 (мінус один).

Приклади

№ INPUT.TXT OUTPUT.TXT

1 5 21 2 3

2 7 21 2 -1

3 5 23 4 0

Варіант 74
Знайти кількість N-значних чисел, у яких сума цифр дорівнює їхньому добутку. Вивести найменше
серед таких чисел для заданого N.

Вхідні дані

У єдиному рядку вхідного файлу INPUT.TXT записано одне натуральне число N, яке не перевищує
20.

Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT необхідно вивести через пропуск 2 числа: кількість
шуканих чисел і меншу серед них.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 1 10 0

2 2 1 22

Варіант 75
У кожній мові програмування, навіть найпростішою, є оператор розгалуження, що дозволяє
перевірити істинність логічного вираження і, залежно від його результату, виконати ту чи іншу дію.
Умова оператора розгалуження є логічним (булевським) виразом, результатом якого може бути
або істина (TRUE), або брехня (FALSE). Змінні, які можуть брати участь у логічному вираженні,
називаються булевськими (boolean). Булевські змінні можуть об'єднуватись у складні умови за
допомогою логічних операцій (функцій):

AND(x1,x2,.. xs). Операція «І» повертає справжнє значення, якщо всі її операнди істинні. (2 ≤
кількість операндів ≤ s);

OR(x1,x2,.. xs). Операція «АБО», повертає справжнє значення, якщо хоча б один її операнд є
істинним. (2 ≤ кількість операндів ≤ s);

NOT(x1). Операція «НЕ» змінює значення операнда х1 на протилежне (операнд завжди один).

У логічному умові може використовуватися кілька логічних функцій, вкладених один одного, тобто
результат однієї функції може використовуватися інший як операнда. Наприклад, AND(A, B,
OR(C,D)). Даний вираз буде істинним тоді, коли істинні А, B і (С або D).

Потрібно написати програму, яка за наявним логічним виразом та значенням логічних змінних
визначить результат виразу. Кількість операндів у функцій AND та OR завжди дорівнює двом (s=2).

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить логічний вираз (довжина не більше 255
символів). Другий рядок містить два числа, розділені одним або декількома пробілами: N –
кількість блоків (не більше 10), K – кількість змінних (не більше 26). Далі слідує N блоків, кожен має
наступну структуру: складається з K рядків, кожен містить вираз типу <змінна = значення>. Змінні
задаються великими англійськими літерами, значення константами TRUE або FALSE (великі літери).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть N рядків зі значенням результату логічного виразу для
змінних блоку.

Приклади
№ INPUT.TXT OUTPUT.TXT

AND(A,NOT(B))1 2 FALSE
1
A=FALSEB=TRUE

OR(NOT(AND(A,B)),A)3 TRUETRUETRUE
2
2A=FALSEB=TRUEA=TRUEB=TRUEA=FALSEB=FALSE

Варіант 76
Радіоаматор Петя вирішив зібрати детекторний приймач. Для цього йому знадобився конденсатор
місткістю C мкФ. У розпорядженні Петі є набір N конденсаторів, ємності яких рівні C1, C2, ..., CN
відповідно. Петя пам'ятає, як обчислюється ємність паралельних сполук двох конденсаторів (Cnew
= C1 + C2) і послідовного з'єднання двох конденсаторів (Cnew = (C1*C2)/(C1+C2) ). Петя хоче спаяти
деяку послідовно-паралельну схему з наявного набору конденсаторів, таку, що її ємність ближче
до шуканої (тобто абсолютна величина різниці значень мінімальна). Для виготовлення схеми Петя
може використовувати від 1 до N з наявних у нього конденсаторів.

Нагадаємо визначення послідовно-паралельної схеми. Схема, що складається з одного


конденсатора, - послідовно-паралельна схема. Будь-яка схема, отримана послідовним з'єднанням
двох послідовно-паралельних схем, - послідовно-паралельна, а також будь-яка схема, отримана
паралельним з'єднанням двох послідовно-паралельних схем - послідовно-паралельна.

Вхідні дані

У першому рядку кожного вхідного файлу INPUT.TXT задані числа N і C (N - ціле: 1 ≤ N ≤ 6, С -


речове з не більше ніж 4 знаками після коми: 0 < C < 1000).

У другому рядку міститься послідовність ємностей наявних конденсаторів C1, C2, ..., CN. Усі
значення Ci - натуральні числа, що не перевищують 1000.

Вихідні дані

У вихідний файл OUTPUT.TXT необхідно вивести YES, якщо Пете вдасться зібрати схему, ємність
якої відрізняється не більше ніж 0.01 від необхідного значення C. В іншому випадку слід вивести
NO.

приклад

№ INPUT.TXT OUTPUT.TXT

1 3 1.661 2 1 YES

Пояснення, наприклад

Послідовно з'єднаємо перший і другий конденсатори, а потім отриману схему з'єднаємо


паралельно з третім. Отримана схема матиме ємність 1.(6)
Варіант 77
Магараджа - це шахова фігура, що поєднує можливості ферзя та коня. Таким чином, магараджа
може ходити і бити на будь-яку кількість клітин по діагоналі, горизонталі та вертикалі (тобто як
ферзь), а також або на дві клітинки по горизонталі та на одну по вертикалі, або на одну по
горизонталі та на дві по вертикалі (як кінь).

Ваше завдання — знайти число способів розставити на дошці N на N рівно K магараджів так, щоб
вони не били один одного.

Вхідні дані

Вхідний файл INPUT.TXT містить два цілих числа: N і K (1 ≤ K ≤ N ≤ 10).

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть відповідь на завдання.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 31 9

2 42 20

3 53 48

Варіант 78
Для доступу до лабораторії НДІ Досліджень Даних Рядків використовуються ключі у вигляді
прямокутних карток N×M, в яких вирізані дірки. Ці ключі можна вставляти лише одним способом
(тобто не повертати, не перевертати не можна). При цьому дірки мають прямокутну форму. До
Васі потрапило два ключі від різних лабораторій. Він вирішив їх накласти один на одного так, щоб
фігура, що вийшла, мала максимальну кількість дірок (просвітів). При цьому ключі лежали в тому
положенні, в якому їх необхідно вставляти в замок, а Вася не хоче їх повертати. Допоможіть Васі
визначити максимальну кількість дірок. При накладенні вважаються ті дірки, нутрощі яких не
порожні.

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить два цілих числа - 1 ≤ N, M ≤ 109 - довжини сторін
ключа. Другий рядок містить єдине ціле число - 1 ≤ K1 ≤ 500 - число дірок у першому ключі. Далі в
рядках K1 написано по чотири цілих числа - X1, Y1, X2, Y2 (0 ≤ X1 < X2 ≤ N, 0 ≤ Y1 < Y2 ≤ M) –
координати кутів відповідних прямокутних дірок. Дірки у ключі не перетинаються і не торкаються.

Далі слідує опис другого ключа в такому ж форматі.

Вихідні дані
У вихідний файл OUTPUT.TXT виведіть єдине ціле число - максимальну кількість дірок, які може
отримати Вася.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 10 1011 1 2 211 1 2 2 1

2 10 1021 1 2 23 3 4 411 1 2 2 1

3 10 1021 1 2 23 3 4 411 1 3 3 2

Варіант 79
"Гра в 24" - це математична гра, в якій використовуються спеціальні картки. На кожній картці
записано чотири числа. Завдання гравців полягає в тому, щоб отримати число 24, використовуючи
ці числа та арифметичні операції (складання, віднімання, множення та поділ, дужки при цьому
можна розставити довільним чином). Гра в 24 використовується в деяких школах при вивченні
математики в початкових класах.

У цій задачі розглядається спрощений варіант цієї гри, в якому до дозволених операцій входять
тільки додавання, віднімання і множення.

Назвемо картку для спрощеної «Ігри в 24» правильною, якщо із зазначених на ній чисел за
допомогою додавання, віднімання, множення та розстановки дужок довільним чином можна
отримати число 24.

Фірма American Card Manufacturer (ACM) займається випуском наборів карток для цієї гри. Однак,
випуск таких карток пов'язаний із деякими труднощами. Одна з них полягає в тому, що не будь-
який набір із чотирьох чисел задає «правильну» картку.

Тому завдання перевірки «правильності» даної картки є дуже актуальною. Ваше завдання полягає
у написанні програми, яка здійснюватиме вказану перевірку.

Вхідні дані

Вхідний файл INPUT.TXT містить чотири натуральні числа, що не перевищують 30, які написані на
досліджуваній картці.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть слово YES, якщо картка є правильною, і слово NO інакше.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 1234 YES
2 1111 NO

Варіант 80
Для участі у змаганнях із перетягування каната зареєструвалося N осіб. Деякі з учасників можуть
бути знайомі один з одним. Причому якщо двоє з них мають спільного знайомого, то це не
означає, що вони обов'язково знайомі один з одним.

Організатори змагань зацікавлені у їхньому якісному проведенні. Вони хочуть поділити всіх
учасників на дві команди так, щоб у першій команді було K осіб, а у другій – NK. З усіх можливих
варіантів формування команд, організатори хочуть вибрати такий варіант, коли сума
згуртованостей обох команд максимальна. Згуртованістю команди називається кількість пар
учасників цієї команди, знайомих одна з одною. Ваше завдання – допомогти організаторам знайти
потрібний поділ учасників на дві команди.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT задаються три числа N, K, M, розділені одиночними
пробілами, де N – загальна кількість зареєстрованих учасників, K – потрібна кількість осіб у першій
команді, M – кількість пар учасників, знайомих друг з одним.

Кожен із наступних M рядків містить два різні числа, розділені пропуском – номери двох учасників,
знайомих один з одним. Усі учасники нумеруються від 1 до N.

Обмеження: усі числа цілі, 0 < K < N < 25, 0 ≤ M ≤ N(N-1)/2

Вихідні дані

Вихідний файл OUTPUT.TXT повинен містити один рядок, що складається з K чисел, кожне з яких
задає номер учасника, який потрапив до першої команди. Числа повинні бути розділені
пробілами. Якщо існує кілька розв'язків цього завдання, то виведіть будь-яке з них.

приклад

№ INPUT.TXT OUTPUT.TXT

1 5 3 31 32 55 4 524

Варіант 81
Розглянемо слова, які з перших n букв англійського алфавіту. Морфізм – це функція f, яка за
буквою повертає слово. Розглянемо приклад морфізму: f(A) = ABC, f(B) = A, f(C) = BC.

Якщо ми розглянемо слово w = c1c2...cl і застосуємо щодо нього морфізм f, ми отримаємо слово
f(w) = f(c1)f(c2)...f(cl). Наприклад, для морфізму попереднього параграфа f(ABC) = ABCABC.

Ми можемо застосовувати морфізм до слова кілька разів. Покладемо f0(w) = w і для k > 0
покладемо fk(w) = f(fk−1(w)).
По заданому морфізму f, слову w, числу k і числу p, знайдіть p символ слова fk(w).

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить числа n, k і p (1 ≤ n ≤ 10, 0 ≤ k ≤ 109,1 ≤ p ≤ 20).
Другий рядок вхідного файлу містить слово w. Його довжина вбирається у 50. Наступні n рядків
містять f(A), f(B), тощо. Кожне значення – це рядок, який містить від 1 до 50 символів.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть p символ fk(w), або «-» (мінус) - якщо такий символ
відсутній.

Приклади

№ INPUT.TXT OUTPUT.TXT

3 1 5ABC B
1 ABC
ABC

3 1 7ABC -
2
ABCABC

Варіант 82
Останнім часом Петя дуже зацікавився однією грою. Коротко правила такі: Є море розміром (2 n +
1) x (2 n + 1) клітин. Спочатку в деяких клітинах знаходяться острови, в деяких - ворожі кораблі, в
центрі - корабель гравця. За один хід гравець може переміститися або вистрілити; пропустити хід
не можна.

Переміщення проводиться на одну із восьми сусідніх клітин, за умови, що вона існує і вільна. При
цьому вважається, що корабель спочатку повертається на місці носом до обраної клітини, а потім
рухається до неї.

При пострілі корабель робить залп обома бортами. Ядра при цьому летять перпендикулярно до
поточного курсу корабля. Ядра кожного борту вражають першу мету, що зустрілася в даному
напрямку (корабель або острів), але не далі трьох клітин від корабля гравця (не враховуючи
клітинку, на якій знаходиться сам корабель гравця). Наприклад, якщо корабель приплив з клітини
(2, 1) у клітину (1, 2), а потім вистрілив, він знищить ворожий корабель на клітині (4, 5), але не
вразить корабель на (5, 6). Якщо до того ж на клітці (2, 3) стоятиме корабель або острів, то
корабель на (4, 5) залишиться цілим. Спочатку корабель гравця стоїть на клітці (n, n) з таким
напрямом, ніби він приплив із клітки (n-1, n).

Після кожного ходу гравця ворожі кораблі одночасно роблять хід. Кожен із кораблів ходить на ту з
восьми сусідніх клітин, сума модулів різниць координат якої та координат корабля гравця
мінімальна. Формально, якщо корабель гравця перебуває в клітці (xs, ys), то вибирається така
клітина (x, y), на яку |xs−x|+|ys−y| мінімально. Якщо при цьому виявляється, що в цій клітині
знаходиться острів, ворожий корабель гине. Якщо хоча б один ворожий корабель потрапляє на
клітку з кораблем гравця, гравець програє. Якщо хоча б два ворожі кораблі опиняються на одній
клітці, то вони гинуть і на цій клітці утворюються уламки, які далі діють так само, як острів за
винятком, що снаряди перелітають через уламки, а не вражають їх. При знищенні корабля ядром
також утворюються уламки. На місці острова уламки не утворюються. Гравець перемагає, якщо на
полі немає жодного ворожого корабля.

Петі стало дуже цікаво, чи можна у кожній конкретній ситуації виграти чи ні. І тому він вирішив
написати програму. Ні, Вам не треба допомагати йому. Він із цим завданням вже впорався, а ось
чи впораєтеся ви?

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT встановлено число n (1 ≤ n ≤ 6), що визначає розмір
поля. Далі йдуть 2•n+1 рядків по 2•n+1 символів у кожному. При цьому i-й символ (j+1)-го рядка
описує клітину поля з координатами (i-1, j-1) (клітини нумеруються з 0). Значення символів таке:

"." (Точка) - Порожня клітина;

"t" (t маленьке англійське) - ворожий корабель;

"O" (o велике англійське) - острів;

"+" (плюс) - корабель гравця.

Символ «+» завжди присутній і розташовується лише у клітині координатами (n×n). Кількість інших
символів може бути будь-яким і обмежена лише розмірами дошки.

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть кількість ходів, необхідних для виграшу. У
наступних рядках виведіть координати корабля після кожного з ходів по одній парі в рядку.
Мінімізувати кількість ходів необов'язково; Проте, якщо ворожих кораблів не залишилося,
подальші ходи робити годі було. Якщо рішення не існує, виведіть IMPOSSIBLE у єдиному рядку
файлу. Якщо є кілька рішень, виведіть будь-яке.

Приклади

№ INPUT.TXT OUTPUT.TXT

5..........t.......t...O......t...t............... IMPOSSIBLE
1 ....tO..t..+...................O.....Ot...O.........
..t........t..O.....

5....t..OO....t.................................... ... 75 55 55 55 45 3
2
..O..+.......................................t.... ..........O..... 6 25 1

Варіант 83
У рамках підготовки до чемпіонату світу Кирило вигадав Ані завдання. Він написав N знакових 32-
бітових чисел і попросив обчислити значення деякого виразу S. Нехай a1, …, aN – усі ці числа. Тоді
вираз це

S = (a1 xor a2 xor … xor an) xor (b1 xor b2 xor … xor bn-1),
де

bi = F(ai, ai+1) xor F(ai, ai+2) xor … xor F(ai, an).

У цій формулі під знаком xor розуміється побітове «що виключає або», а F(a, b) = x - 1, де x -
максимальний ступінь двійки, на яку ділиться націло ab, якщо a ≠ b, і F(a, b) = -1, якщо a = b. Всі
операції xor виконуються ліворуч, якщо дужки не вказують інший порядок.

Аня, як велика спеціалістка в галузі циклів, швидко написала необхідну програму, проте програма
працювала надто довго. Щоб краще розібратися в цьому питанні, вона попросила вас написати
програму, яка б вкладалася у відведений час. Допоможіть це зробити.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT міститься число N (1 ≤ N ≤ 105). У наступних N рядках
міститься N 32-бітових знакових цілих чисел ai по одному рядку.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть значення виразу.

Приклади

№ INPUT.TXT OUTPUT.TXT

1 3123 1

2 211 -1

31 6
3
24

Варіант 84
Потрібно обчислити значення арифметичного виразу, в записі якого можуть використовуватися
речові числа, круглі дужки, пробіли, бінарні операції "+", "-", "*" і "/", а також функції cos(x) і sin(x) .
Обчислення слід проводити згідно з синтаксисом мови Delphi.

Вхідні дані

Вхідний файл INPUT.TXT містить єдиний рядок, в якому знаходиться запис арифметичного виразу.
Довжина рядка не перевищує 200 символів. У рядку можуть бути будь-які символи. Гарантується,
що при коректному обчисленні виразу не виникатиме переповнення 6-байтного речового типу та
поділу на нуль.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть значення заданого арифметичного виразу з точністю не


менше 10-3. У тому випадку, коли у виразі є синтаксичні помилки, слід вивести «Error».

Приклади
№ INPUT.TXT OUTPUT.TXT
1 2+3 5
2 7*8 – 120/6 + 4 40
3 10/(6-2)+8 10.5
4 sin(3.14/2)+cos(2-6/3) 2
5 three plus five Error
6 6.12e3+2e-2 6120.02
7 -1 Error
8 12. + Sin(7) 12.656987

Варіант 85
Останнім часом Петя дуже зацікавився однією грою. Коротко правила такі: Є море розміром (2 n +
1) x (2 n + 1) клітин. Спочатку в деяких клітинах знаходяться острови, в деяких - ворожі кораблі, в
центрі - корабель гравця. За один хід гравець може переміститися або вистрілити; пропустити хід
не можна.

Переміщення проводиться на одну із восьми сусідніх клітин, за умови, що вона існує і вільна. При
цьому вважається, що корабель спочатку повертається на місці носом до обраної клітини, а потім
рухається до неї.

При пострілі корабель робить залп обома бортами. Ядра при цьому летять перпендикулярно до
поточного курсу корабля. Ядра кожного борту вражають першу мету, що зустрілася в даному
напрямку (корабель або острів), але не далі трьох клітин від корабля гравця (не враховуючи
клітинку, на якій знаходиться сам корабель гравця). Наприклад, якщо корабель приплив з клітини
(2, 1) у клітину (1, 2), а потім вистрілив, він знищить ворожий корабель на клітині (4, 5), але не
вразить корабель на (5, 6). Якщо до того ж на клітці (2, 3) стоятиме корабель або острів, то
корабель на (4, 5) залишиться цілим. Спочатку корабель гравця стоїть на клітці (n, n) з таким
напрямом, ніби він приплив із клітки (n-1, n).

Після кожного ходу гравця ворожі кораблі одночасно роблять хід. Кожен із кораблів ходить на ту з
восьми сусідніх клітин, сума модулів різниць координат якої та координат корабля гравця
мінімальна. Формально, якщо корабель гравця перебуває в клітці (xs, ys), то вибирається така
клітина (x, y), на яку |xs−x|+|ys−y| мінімально. Якщо при цьому виявляється, що в цій клітині
знаходиться острів, ворожий корабель гине. Якщо хоча б один ворожий корабель потрапляє на
клітку з кораблем гравця, гравець програє. Якщо хоча б два ворожі кораблі опиняються на одній
клітці, то вони гинуть і на цій клітці утворюються уламки, які далі діють так само, як острів за
винятком, що снаряди перелітають через уламки, а не вражають їх. При знищенні корабля ядром
також утворюються уламки. На місці острова уламки не утворюються. Гравець перемагає, якщо на
полі немає жодного ворожого корабля.

Петі стало дуже цікаво, чи можна у кожній конкретній ситуації виграти чи ні. І тому він вирішив
написати програму. Ні, Вам не треба допомагати йому. Він із цим завданням вже впорався, а ось
чи впораєтеся ви?
Вхідні дані

У першому рядку вхідного файлу INPUT.TXT встановлено число n (1 ≤ n ≤ 6), що визначає розмір
поля. Далі йдуть 2•n+1 рядків по 2•n+1 символів у кожному. При цьому i-й символ (j+1)-го рядка
описує клітину поля з координатами (i-1, j-1) (клітини нумеруються з 0). Значення символів таке:

"." (Точка) - Порожня клітина;

"t" (t маленьке англійське) - ворожий корабель;

"O" (o велике англійське) - острів;

"+" (плюс) - корабель гравця.

Символ «+» завжди присутній і розташовується лише у клітині координатами (n×n). Кількість інших
символів може бути будь-яким і обмежена лише розмірами дошки.

Вихідні дані

У першому рядку вихідного файлу OUTPUT.TXT виведіть кількість ходів, необхідних для виграшу. У
наступних рядках виведіть координати корабля після кожного з ходів по одній парі в рядку.
Мінімізувати кількість ходів необов'язково; Проте, якщо ворожих кораблів не залишилося,
подальші ходи робити годі було. Якщо рішення не існує, виведіть IMPOSSIBLE у єдиному рядку
файлу. Якщо є кілька рішень, виведіть будь-яке.

Приклади

OUTPUT.TX
№ INPUT.TXT
T
5..........t.......t...O......t...t........... IMPOSSIB
.... LE
1
....tO..t..+...................O.....Ot...O...
...... ..t........t..O.....
5....t..OO....t............................... 75 55 55
..... 55 45 36
2
.....O..+..................................... 25 1
..t. .............O.....

Варіант 86
Розглянемо слова, які з перших n букв англійського алфавіту. Морфізм – це функція f, яка за
буквою повертає слово. Розглянемо приклад морфізму: f(A) = ABC, f(B) = A, f(C) = BC.

Якщо ми розглянемо слово w = c1c2...cl і застосуємо щодо нього морфізм f, ми отримаємо слово
f(w) = f(c1)f(c2)...f(cl). Наприклад, для морфізму попереднього параграфа f(ABC) = ABCABC.

Ми можемо застосовувати морфізм до слова кілька разів. Покладемо f0(w) = w і для k > 0
покладемо fk(w) = f(fk−1(w)).
По заданому морфізму f, слову w, числу k і числу p, знайдіть p символ слова fk(w).

Вхідні дані

Перший рядок вхідного файлу INPUT.TXT містить числа n, k і p (1 ≤ n ≤ 10, 0 ≤ k ≤ 109,1 ≤ p ≤ 20).
Другий рядок вхідного файлу містить слово w. Його довжина вбирається у 50. Наступні n рядків
містять f(A), f(B), тощо. Кожне значення – це рядок, який містить від 1 до 50 символів.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть p символ fk(w), або «-» (мінус) - якщо такий символ
відсутній.

Приклади

№ INPUT.TXT OUTPUT.TXT
3 1 5ABC B
1
ABCABC
3 1 7ABC -
2
ABCABC

Варіант 87
Для участі у змаганнях із перетягування каната зареєструвалося N осіб. Деякі з учасників можуть
бути знайомі один з одним. Причому якщо двоє з них мають спільного знайомого, то це не означає,
що вони обов'язково знайомі один з одним.

Організатори змагань зацікавлені у їхньому якісному проведенні. Вони хочуть поділити всіх
учасників на дві команди так, щоб у першій команді було K осіб, а у другій – NK. З усіх можливих
варіантів формування команд, організатори хочуть вибрати такий варіант, коли сума згуртованостей
обох команд максимальна. Згуртованістю команди називається кількість пар учасників цієї команди,
знайомих одна з одною. Ваше завдання – допомогти організаторам знайти потрібний поділ
учасників на дві команди.

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT задаються три числа N, K, M, розділені одиночними
пробілами, де N – загальна кількість зареєстрованих учасників, K – потрібна кількість осіб у першій
команді, M – кількість пар учасників, знайомих друг з одним.

Кожен із наступних M рядків містить два різні числа, розділені пропуском – номери двох учасників,
знайомих один з одним. Усі учасники нумеруються від 1 до N.

Обмеження: усі числа цілі, 0 < K < N < 25, 0 ≤ M ≤ N(N-1)/2

Вихідні дані

Вихідний файл OUTPUT.TXT повинен містити один рядок, що складається з K чисел, кожне з яких
задає номер учасника, який потрапив до першої команди. Числа повинні бути розділені пробілами.
Якщо існує кілька розв'язків цього завдання, то виведіть будь-яке з них.
приклад

№ INPUT.TXT OUTPUT.TXT
1 5 3 31 32 55 4 5 2 4

Варіант 88
Вася вміє швидко набирати на клавіатурі різні слова. Іноді він робить це так швидко, що в слові
міняються місцями якісь дві літери (які не обов'язково стоять поспіль). І тоді, якщо Вася спілкується
в чаті, співрозмовник не завжди розуміє його правильно: адже, скажімо, якщо Вася набрав «BEATS»
і при цьому, можливо, поміняв подекуди дві літери, він міг мати на увазі і «BEATS», і «BEAST », і
навіть «BETAS». . .

Як добре було б, якби осмислені слова не можна було переплутати, навіть якщо переставити в них
якісь дві літери! Васю зацікавив теоретичний бік цього питання. А саме: скільки ж можна виділити
слів із заданого набору букв так, щоб жодні два слова, якщо в одному з них або навіть у кожному
переставити дві букви місцями, не стали б однаковими. Наприклад, безліч слів "BEAST" і "BETAS" не
підходить, тому що з кожного слова можна перестановкою двох літер отримати "BEATS". З іншого
боку, «WORDS» і «SWORD» - потрібна множина: як не переставляй пару літер в одному і в іншому
слові, однакову послідовність не отримати.

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

Вхідні дані

У першому рядку вхідного файлу INPUT.TXT записані поспіль п'ять великих букв англійського
алфавіту.

Вихідні дані

У вихідний файл OUTPUT.TXT виведіть максимальну за розміром безліч слів, які є перестановками
даного набору букв, які можна оголосити осмисленими, щоб їх не можна було переплутати. Слова
слід виводити по одному на рядку. Якщо таких множин кілька, дозволяється вивести будь-яку з них.

приклад

№ INPUT.TXT OUTPUT.TXT
1 TATRA TATRAARATT

You might also like