Задача А. "Квадрат Полібія"
Один з найдавніших шифрів розробив Полібій (ІІІ ст. до н.е.) - грецький історик, полководець, державний діяч. У шифрі, який назвали “квадрат Полібія”, кожна літера алфавіту (або пара літер, що відповідають близьким за вимовою звукам) міститься в таблиці. Під час кодування повідомлення кожна літера замінюється парою цифр - номерами стовпця та рядка таблиці, на перетині яких вона розміщена. Для кодування повідомлень англійською мовою може бути використана таблиця.
Слово CODE у закодованому вигляді 31 43 41 51
Вхідні дані:
У першому рядку файла polybius.dat записано ціле число N (0<N<100). У наступних N рядках через пропуск записано ціле число L - довжина слова (0<L<256) та шифри літер за допомогою даної таблиці Полібія.
Вихідні дані:
В файл polybius.sol потрібно вивести декодовані слова великими латинськими літерами, кожне у окремому рядку в тій самій послідовності, як вони записані у файлі polybius.dat.
Приклади
Вхідні дані | Вихідні дані |
2 4 22 43 43 41 4 13 54 31 52 |
GOOD LUCK |
Задача B. "День народження"
Пес Кулька полюбляє рибні котлети. На свій День народження він вирішив всіх друзів пригостити рибними котлетами. Пес порахував, що йому потрібно N рибин. (0<N<1000). Пес - рибалка зі стажем, тому кожен день він вдосконалюється та ловить на S (0<S<N) рибин більше ніж в попередній день. В перший день пес традиційно ловить K (0<K<N) рибин. Але кіт Матроскін полюбляє живу рибу і завжди з’їдає половину улову за день. Якщо кількість рибин в улові за день непарна, тоді кіт з’їдає менше на одну рибину ніж залишає. Знаючи звичку кота, пес Кулька намагається визначити за скільки днів до дня народження йому потрібно відправитися на риболовлю, щоб наловити потрібну кількість рибин і не посваритися з котом - головним гостем на його дні народження.
Вхідні дані:
У стандартному вхідному потоці через пропуск записано три цілих числа N, S, K.
Вихідні дані:
У стандартний вихідний потік потрібно вивести найменшу кількість днів, які потрібні псу, щоб наловити необхідну кількість рибин та не посваритися з котом.
Приклади
Вхідні дані | Вихідні дані |
20 2 3 | 5 |
Задача С. "Сервер"
На сервері зберігається інформація про роботу клієнтів у мережі. Інформація записується у наступному вигляді: перших чотири числа вказують адресу з якої звертається програма-клієнт, а наступні чотири числа - на яку адресу звертається. Потрібно встановити адресу найактивнішого клієнта та адреси всіх ресурсів до яких він звертався. Гарантовано, найактивніший тільки один.
Вхідні дані:
У стандартному вхідному потоці в першому рядку записано ціле число N (0<N<1000) у наступних N рядках по вісім цілих чисел, значення яких від 0 до 255.
Вихідні дані:
У стандартний вихідний потік у першому рядку потрібно вивести чотири числа через крапку (адресу найактивнішого клієнта) та у наступному рядку підряд 15 символів "-", у наступних рядках - кількість звернень, пропуск, символ "-", пропуск та адреса. Адреси відвідування виводити за спаданням кількості відвідувань, а якщо відвідувань однакова кількість потрібно виводити в порядку зростання адреси.
Приклади
Вхідні дані | Вихідні дані |
6 192 168 1 1 46 63 83 191 192 168 1 1 46 63 83 192 192 168 1 2 46 63 83 193 192 168 1 1 46 63 83 191 192 168 1 2 46 63 83 193 192 168 1 1 46 63 83 193 |
192.168.1.1 --------------- 2 - 46.63.83.191 1 - 46.63.83.192 1 - 46.63.83.193 |
Задача D. "Морський бій"
Дано розмірність у клітинках квадратного ігрового поля N (1<N<11) та P (0<P<N) - максимальна кількість клітинок найбільшого корабля. За правилами кораблі не торкаються сторонами та їх кількість зростає на 1 зі зменшенням на 1 кількості клітинок на корабель починаючи від єдиного найбільшого корабля та закінчуючи одноклітинними кораблями. Наприклад, якщо P=4, тоді кількість кораблів 10. 1 корабель – 4 клітини, 2 корабля – по 3 клітини, 3 корабля – по 2 клітини та 4 корабля – по 1 клітині.
Знаючи координати розташування кораблів та крок N-1 потрібно розрахувати найменшу кількість ходів, яка дозволить уразити всі кораблі хоча б один раз. Крок пострілів починається від лівого верхнього кута ігрового поля – комірки з координатами 1 1, тобто комірки 1 N-1 . При досягненні краю ігрового поля кроки відраховуються у наступному рядку враховуючи незакінченість попереднього кроку, а при досягненні правого нижнього кута відбувається повернення на лівий верхній кут ігрового поля враховуючи незакінченість попереднього ходу. Наприклад, при значенні N=3 координати пострілів такі: 1 2, 2 1, 2 3, 3 2, 1 1, 1 3, 2 2, 3 1, 3 3.
Вхідні дані:
У файлі battleship.dat у першому рядку через пропуск записано два цілих числа N, P.
У наступних рядках через пропуск записано по чотири цілих числа – координати розташування кораблів, координати його початку та кінця (x1<=x2, y1<=y2).
Вихідні дані:
У файл battleship.sol потрібно вивести єдине число – кількість пострілів.
Приклади
Вхідні дані | Вихідні дані |
4 2 2 1 2 2 1 4 1 4 4 2 4 2 |
12 |
Задача E. "Лабіринт"
Дано прямокутну таблицю розміром N на M (0<N, M<50). В деяких комірках таблиці записано число 0, а в деяких -1. 0 – комірка вільна і в неї можна переміститися, -1 – комірка з перешкодою і переміщуватися в цю комірку не можна. Ваша задача знайти найменшу кількість кроків між вказаними комірками. За один крок рухатися можна тільки в сусідні горизонтальні або вертикальні комірки, не допускається діагональний рух. Нумерація рядків та стовпців таблиці починається з 1.
Вхідні дані:
У стандартному вхідному потоці в першому рядку через пропуск вводяться два числа N та M. В другому рядку через пропуск записано координати початкової та кінцевої комірок. У наступних N рядках через пропуск записано по M чисел, 0 чи -1.
Вихідні дані:
В стандартний вихідний потік потрібно вивести найменшу кількість кроків для переміщення з одної комірки в іншу. Якщо шляху не існує потрібно вивести слово No.
Приклади
Вхідні дані | Вихідні дані |
8 11 5 5 6 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
11 |