Хмельницька обласна олімпіада з інформатики 2005 - 2006 Другий етап (04.12.05) Районний (міський) тур ------------------------------------------------------------------------------ Задача 1. (18 балів) Двоє товаришів домовилися перевірити скільки часу вони сплять. Один з них має лише годинник з циферблатом, на якому години позначаються числами від 1 до 23, хвилини і секунди визначаються за поділками, яких на циферблаті 60. Другий має лише цифровий секундомір, на якому облік часу ведеться у секундах і може виражатися невід’ємним цілим числом. Коли кожен з них лягав спати, зафіксував час. Годинник першого показував час Н годин М хвилин S секунд, а другий увімкнув секундомір. Коли кожен проснувся, зафіксував показання. Годинник першого показував H1 годин M1 хвилин S1 секунд. Секундомір другого показав, що пройшло Т секунд. Відомо також, що кожен з товаришів спав більше 8 але менше 12 годин. Складіть програму, яка визначить хто довше спав і на скільки секунд. Вхідні дані: В першому рядку текстового файлу son.dat записані три цілих числа Н, М та S, розділені пропусками – показання годинника на початку відліку ( 0 <= H <= 23, 0 <= M < 60, 0 <= S < 60 ). В другому рядку – записані три цілих числа Н1, М1 та S1, розділені пропусками – показання годинника в кінці відліку ( 0 <= H1 <= 23, 0 <= M1 < 60, 0 <= S1 < 60 ). В третьому рядку - єдине число Т, час на секундомірі ( 0 <= Т <= 100000 ). Вихідні дані: В перший рядок текстового файлу son.sol потрібно записати 1, якщо довше спав перший товариш, 2 якщо довше спав другий товариш і 0, якщо вони спали порівну. У другому рядку потрібно записати час в секундах, який показує на скільки довше спав один товариш за іншого. Програму слід назвати z1.*, де * - розширення дозволеної мови програмування. Приклад: son.dat 22 00 00 7 05 00 32700 son.sol 0 0 ------------------------------------------------------------------------------ Задача 2. (30 балів) У країні Труляля проходить дистанційна олімпіада з програмування. Дані передаються послідовностями нулів і одиниць. Недоліком в країні є низькошвидкісні та неякісні канали передачі даних. Через шум можливий помилковий прийом деяких сигналів: послали 0 – прийшла 1, і навпаки. Інженери вирішили для забезпечення якості передачі даних посилати кожен символ тричі. При розшифровці три послідовні цифри замінялись тією, яка зустрічалась хоча б двічі. Напишіть за вхідним файлом, що містить нулі і одиниці, вихідний, у якому повідомлення буде прочитане та перетворене в символи кодової таблиці (ASCII). Вхідні дані: У текстовому файлі KOD.TXT записано послідовність 0 і 1. Вихідні дані: У текстовий файл UNKOD.TXT вивести повідомлення символами кодової таблиці (ASCII). Програму слід назвати z2.*, де * - розширення дозволеної мови програмування. Приклад. KOD.TXT 001101000101010011010000 UNKOD.TXT T ------------------------------------------------------------------------------ Задача 3. (45 балів) Історія про Короля Артура і Лицарів Круглого Стола (у нашому варіанті - Лицарів Шахової Дошки) надихала художників, вчених і просто мрійників на протязі сотень років. Тепер ви можете вселити нове життя в легенду про Камелот розв’язавши описану задачу. Сер Акколон, благородний лицар, що попав під чари феї Моргани та допоміг їй викрасти меч Короля Артура більше всього в житті бажав чесних перемог. Одного разу зачарований сер Акколон точно взнав час своєї смерті. Тож, не гаючи часу, він скочив на свого коня і стрімголов кинувся добувати перемоги. Лицарі Шахової Дошки для пересування використовували коней, які, звичайно, поводилися аналогічно відомій шаховій фігурі "Кінь", тобто рухалися не по прямій, а скачками у вигляді літери "Г". Сер Акколон не любив рухатися проти сонця, це заважало йому першому побачити противника, і тому під час своєї подорожі він рухався лише на північ, або на південь. При цьому він не заважав коневі робити повороти, які були закладені в його природі. Коли відважний лицар неушкоджений досягав межі королівства (Шахової Дошки) він переможно вигукував: Victory! Після пережитого тріумфу він, не вагаючись, повертає на 180 градусів і мчить до протилежної сторони королівства щоб знову вигукнути своє переможне " Victory!", по дорозі роздумуючи над тим, скільки ще таких перемог він зможе отримати до кінця свого життя. Ваша задача допомогти серу Акколону підрахувати кількість перемог, яких він встигне досягти, якщо відомі початкові координати за шаховими правилами, розмір дошки N та час життя T в секундах. Сер Акколон вибирає на початку оптимальний напрям руху для отримання найшвидшої перемоги, його кінь за 1 с робить один стрибок, а переможний клич лунає лише тоді, коли він зробить хоча би один крок до межі королівства. Вхідні дані. У файлі victory.in в першому рядку містяться натуральні числа N ( 3<=N<=100) та T (0<=T<=1000000000). В другому рядку записані початкові координати сера Акколона. Наприклад, можуть бути такі варіанти в залежності від розмірів дошки: a2, aa5, ab98. Вихідні дані. Файл victory.out містить одне число: кількість перемог сера Акколона. Програму слід назвати z3.*, де * - розширення дозволеної мови програмування. Приклади: victory.in 4 6 a2 victory.out 3 victory.in 10 10 a1 victory.out 2 ------------------------------------------------------------------------------ Задача 4. (7 балів) Скласти програму z4.exe, яка при запуску виводить у файл anketa.txt такі дані малими латинськими літерами: у перший рядок ваше прізвище; у другий рядок ваше ім'я; у третій рядок назву вашої школи; у четвертий рядок клас; у п'ятий рядок прізвище людини, яка вас готувала до олімпіади. ------------------------------------------------------------------------------ УВАГА!!! 1. Здати на перевірку потрібно папку із файлами z1.pas, z2.pas, z3.pas, z4.exe для тих учасників, які використовували Паскаль. Наявність у папці кожного зайвого файлу штрафується одним балом. 2. Хто використовував інші мови програмування, уточніть назви файлів у членів журі. 3. Папку слід створити на початку олімпіади на диску С: або D: і назвати першими чотирма латинськими літерами. У випадку співпадань імен папок використовуйте п'ятий-восьмий символ для назви папок так, щоб не було співпадань. БУДЬТЕ МАКСИМАЛЬНО УВАЖНИМИ!