1. Система числення, 8 балів. Перший та другий рядки вхідного файлу number.dat містять відповідно десяткові записи натуральних чисел a і b — не більше, ніж 80 цифр у кожному. Наприклад,
123
21
Створіть програму number.* , яка запише у файл NUMBER.RES запис числа a у системі числення з основою b. Всі цифри цієї системи числення записувати наступним чином: або цифра десяткової системи числення, або записаний у квадратних дужках десятковий запис числа, що має не менше 2-х цифр. Для поданого прикладу вхідного файлу файл number.res має містити запис
5[18]
— див. рівність 123=5∙21+18.
2. Спортивний проґноз, 10 балів. Перед фінальним забігом mn бігунів було висловлено m проґнозів щодо послідовності фінішування. У кожному проґнозі правильно вгадано лише n місць, причому кожне місце правильно вгадано лише в одному проґнозі. Перший рядок вхідного файлу prognos.dat містить у вказаному порядку натуральні числа m і n, де mn < 27. Наступні m рядків цього самого файлу містять проґнози, в яких кожного учасника фінального забігу позначено однією з літер кирилиці чи латиниці. Наприклад,
2 2
ACBD
DBCA
Рядки файлу prognos.res мають містити відповідь на питання: у якому порядку фінішували спортсмени (у кожному рядку — по одному можливому варіанту, причому у різних рядках — різні варіанти). Для поданого прикладу вхідного файлу prognos.res містить такі 2 рядки.
ABCD
DCBA
3. Гра–1, 16 балів. На площині дано 4 різні точки
A1(x1; y1),
A2(x2; y2),
A3(x3; y3),
A4(x4; y4).
Двоє гравців по черзі сполучають ці точки відрізками так, що жодна внутрішня точка проведеного відрізка не може належати іншому проведеному відрізку (наприклад, бути його кінцем). Програє той гравець, який не зможе зробити наступний хід.
Єдиний рядок вхідного файлу game1.dat містить у вказаному порядку одноцифрові натуральні числа
x1, y1,
x2, y2,
x3, y3,
x4, y4.
Створіть програму game1.*, яка:
у вихідний файл game1.res запише повідомлення «Виграє 1-ий гравець» або «Виграє 2-ий гравець», якщо відповідно 1-ий або 2-ий гравець може ґарантувати собі виграш для даного розташування точок на площині, причому далі повідомлення або продовжується словами «за будь-яких обставин», або містить рекомендації щодо виграшної стратегії;
зобразить на екрані монітора розташування даних точок координатної площини:
у правому верхньому куті екрану є повідомлення: «n-ий гравець! Задайте номери точок, які хочете сполучити відрізком» (n = 1 або n = 2).
Сполучення точок Aj і Ak гравець задає за допомогою клавіатури набором чисел j і k через пропуск з подальшим натисканням клавіші Еnter. Кожен хід першого гравця відображати рожевим кольором, а другого — світло-зеленим. У разі неправильного задання ходу (сполучення точки з самою собою чи порушення умови стосовно відсутності спільних внутрішніх точок відрізків) гравцю надаються можливість
виправити свою помилку. Після останнього ходу на екрані з'являється повідомлення: «n-ий гравець! Ви виграли. Останній хід ...» і вказано номери точок, сполучених останнім ходом. Виконання програми припиняється після натискання клавіші Enter.
Наприклад, якщо файл game1.dat містить запис
1 1 1 2 2 2 2 1 ,
то файл game1.res має містити таке повідомлення:
Виграє 1-ий гравець за будь-яких обставин
а безпосередньо перед грою на екрані монітора — зображення 4-х вершин квадрата з горизонтальними та вертикальними сторонами.
Гра–2, (44 бали). На площині дано 5 різних точок
A1(x1; y1),
A2(x2; y2),
A3(x3; y3),
A4(x4; y4),
A5(x5; y5).
Єдиний рядок вхідного файлу game2.dat містить у вказаному порядку одноцифрові натуральні числа
x1, y1,
x2, y2,
x3, y3,
x4, y4,
x5, y5.
Створіть програму game2.*, яка задовольняє всі вимоги задачі «Гра–1».
Наприклад, якщо файл game2.dat містить запис
1 1 1 3 2 4 3 3 3 1 ,
то файл вихідний файл game2.res має міститти запис
Виграє 1-ий гравець за будь-яких обставин ,
а перед запрошенням до гри на екрані монітора — зображення вершин опуклого 5-кутника.
1. Камінці, 12 балів. n ямок розташовано у ряд. Для натурального k у межах від 1 до n через jk позначимо кількість камінців у k-ій ямці, якщо рахувати ямки зліва направо.
Нехай при деякому натуральному m > 1 послідовність натуральних чисел l1, l2, …, lm зростає.
Двоє гравців грають таким чином:
за один хід дозволяється перекласти з будь-якої ямки у сусідню праворуч (порядок розташування ямок для обох гравців однаковий) лише таку кількість камінців, що дорівнює одному з чисел l1, l2, …, lm;
програє той, хто не може зробити хід (коли в усіх ямках, крім крайньої праворуч, кількість камінців менша за l1).
1-ий рядок вхідного файлу stones.in містить у вказаному порядку натуральні числа n та m, які лежать в межах від 2 до 5 включно.
2-ий рядок цього файлу містить у вказаному порядку послідовність n невід'ємних цілих чисел: j1, j2, …, jn.
3-ій рядок цього файлу містить послідовність m натуральних чисел: l1, l2, …. , lm,
що зростає, причому l1 + l2 + … + lm < 246.
Назвемо позицією цієї гри розташування камінців у ямках і номер гравця, чия черга ходити. Відомо, що кількість всіх можливих позицій гри не перевищує 1000.
Створіть програму stones.*, яка у 1-ий рядок вихідного файлу stones.res запише номер гравця (спочатку ходить 1-ий гравець, потім — 2-ий), який може ґарантувати собі виграш. Якщо це буде 1, то кожен з наступних рядків цього самого файлу повинен містити по n невід'ємних цілих чисел, що є кількостями камінців у ямках після 1-го ходу, який веде до перемоги 1-го гравця. Потрібно подати у довільному порядку всі можливі варіанти, по 1 рядку на кожний варіант ходу.
Приклади
stones.dat | stones.dat |
---|---|
3 2 4 0 1 2 3 | 2 |
3 2 2 2 1 2 3 |
1 2 0 3 |
2. Десятковий дріб, 10 балів. Створіть програму fraction.*, яка подає відношення двох взаємно простих натуральних чисел a і b десятковим дробом.
Перший та другий рядки вхідного файлу fraction.dat містять відповідно десяткові записи натуральних чисел a і b (кожне — до 77 цифр), b > 1. Наприклад,
41
6
В єдиний рядок вихідного файлу fraction.res потрібно записати подання нескоротного дробу a/b десятковим дробом (використовувати десяткову крапку): якщо можливо, то скінченним десятковим дробом, інакше період вказати у круглих дужках. Для поданого прикладу даних файл fraction.res містить запис
6.8(3)
— див. подання 41/6 = 6.8333333... .
3. Офіцери, 9 балів. За даними розвідки серед 6-ти офіцерів A, B, C, D, E, F є 3 полковники, 2 майори і 1 капітан. Майор зобов'язаний першим вітати полковника, а капітан — і полковника, і майора.
Єдиний рядок вхідного файлу officers.dat містить у вказаному порядку 8 літер латиниці a1, a2, … , a8, не розділених прогалинами, якими позначено офіцерів (деякі літери з переліку A, B, C, D, E, F можуть повторюватися, а деякі — не зустрічатися взагалі). Відомо (у кожному з поданих далі простих речень офіцери, про яких іде мова, різні), що:
Створіть програму officers.*, яка у вихідний файл officers.res запише, хто є хто серед офіцерів. Потрібно через кому перерахувати всіх офіцерів у алфавітному порядку, вказавши через дефіс перші літери звання та роду військ) — по 1 рядку на кожен варіант відповіді. Якщо розвідувальні дані хибні та призводять до логічних суперечностей, то файл officers.res порожній.
Приклад
officers.dat | officers.res |
---|---|
ABDECFDB |
A к-а, B м-а, C м-т, D п-т, E п-з, F п-т. A к-а, B м-а, C п-т, D п-т, E п-з, F м-т. |
Останній рядок вихідного файлу читати так: