1. Булева функція, 78 балів
Створіть програму bool.*, яка встановить істинність виразу.
Єдиний рядок вхідного файлу bool.dat містить вираз з прогалинами, утворений з великих літер латиниці (позначень булевих змінних) за допомогою (перераховано у порядку виконання дій):
дужок ( і ) ;
слів not, and, or для позначення заперечення, логічних і та або відповідно;
позначень =>, <=>, |, ^ відповідно для імплікації (читати «з … випливає …», справджується тоді й лише тоді, коли не справджується умова або справджується висновок), еквівалентності, штриха Шефера (що справджується тоді й лише тоді, коли не справджується хоча б один з арґументів, які він розділяє) та стрілки Пірса (справджується тоді й лише тоді, коли не справджуються обидва арґументи, які вона розділяє).
Вважаємо, що булева змінна, що позначається j-ою літерою латиниці: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, справджується тоді й лише тоді, коли j — парне натуральне число.
Єдиний символ вихідного файлу bool.res — результат встановлення істинності виразу: число 1 або 0 відповідно для істинного або хибного виразу відповідно.
Приклади
bool.dat | bool.res |
---|---|
B => C | 0 |
C => B | 1 |
2. Замощення прямокутника, 48 балів
Створіть програму cover.* , яка обчислить, скількома способами прямокутник розміру 2×n можна замостити, однаковими прямокутниками розміру 2×1. Потрібно покрити прямокутник без виходу за його межі і без спільних внутрішніх точок прямокутників покриття.
Єдиний рядок вхідного файлу cover.dat містить, починаючи з першої позиції, натуральне число n, яке менше за 999.
Єдиний рядок вихідного файлу cover.res має містити, починаючи з першої позиції, шукану кількість способів замощення.
Приклади
cover.dat | cover.res |
---|---|
1 | 1 |
2 | 2 |
Геометрія Рімана-1, 44 бали
На сферичній поверхні Землі розташовано різні точки A1, A2, A3, A4, причому перші три точки не належать одній площині, що проходить через центр Землі. Криволінійний трикутник A1A2A3 на поверхні Землі утворено меншими дугами кіл з центром у центрі Землі.
Вхідний файл riman1.dat містить (у вказаному порядку) цілі числа — координати точок A1, A2, A3, A4: ґрадус, мінута й секунда широти, ґрадус, мінута й секунда довготи. Якщо точка знаходиться у південній (західній) півкулі, то всі відповідні координати широти (довготи) вказано із знаком «–».
Створіть програму riman1.*, яка у файл riman1.res запише слово in чи out, якщо точка A4 розташована відповідно всередині чи зовні трикутника A1A2A3. Випадок розташування точки A4 на стороні криволінійного трикутника A1A2A3 не розглядати.
Приклад
riman1.dat | riman1.res |
---|---|
0 0 0 0 0 0 8 8 8 0 0 0 0 0 0 8 8 8 4 4 4 4 4 4 | in |
Математична довідка: a = b × c, тобто a називають векторним добуток неколінеарних векторів b i c, якщо:
Для векторів a(a1; a2; a3), b(b1; b2; b3) і c(c1; c2; c3) мішаний добуток a ∙ (b × c) — скалярний добуток векторів a і b × c — дорівнює такій сумі:
a1b2c3 + a2b3c1 + a3b1c2 – a3b2c1 – a1b3c2 – a2b1c3.