eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Обертання навколо

Обертання навколо

Розглянемо стержень, який обертається за годинниковою стрілку, ніби палиця, яка крутиться, рухається по плоскій поверхні, оточеній стіною у вигляді многокутника (див. \textit{\textbf{Рисунок 1}}). \includegraphics{https://static.e-olymp.com/content/ba/ba0ece2a623f0c77437cdf1314601a7cf85ae1c3.jpg} \textit{\textbf{Рисунок 1}}. Стержень, який обертається в многокутнику Спочатку один кінець стержня (назвемо його "\textbf{кінець A}") знаходиться у (\textbf{0}, \textbf{0}), а інший кінець (який назвемо "\textbf{кінець B}") у (\textbf{0}, \textbf{L}), де \textbf{L} - довжина стержня. Спочатку стержень дотикається стіни лише у точці \textbf{A}. Стержень обертається, фіксуючи точку дотику як центр обертання. Центр змінюється, як тільки нова точка дотиоркнеться стіни. Вам потрібно обчислити координати кінця \textbf{A}, коли стержень зробить \textbf{R }повних обертів. \includegraphics{https://static.e-olymp.com/content/36/36fa20fba88ac68d38475da99a35a345a353d4bb.jpg} \textit{\textbf{Рисунок 2}}. Приклати поворотів стержня На \textit{\textbf{Рисунку 2}} показано декілька прикладів. У випадках (\textbf{D}) та (\textbf{E}) стержень застряне передчасно (не зоже далі обертатись за годинниковою стрілкою незалежно від того яку точку дотику вибрати у якості центру) до виконання \textbf{R} обертів. У таких випадках потрібно вивести координаты кінця \textbf{A} у цих (застрявших) позиціях. Вважайте, що якщо довжина стержня \textbf{L} змінюється на \textbf{ε} (\textbf{|ε}| < \textbf{0.00001}), то координати (\textbf{x}, \textbf{y}) кінцевої точки не повинні змінитись більше ніж на \textbf{0.0005}. \InputFile Вхідні дані складаються з декількох тестів. Кількість тестів не більша \textbf{100}. У кінці вхідних даних знаходиться рядок "\textbf{0 0 0}". Формат кожного тесту наступний: \textbf{L R N} \textbf{X_1 Y_1} \textbf{X_2 Y_2} \textbf{...} \textbf{X_N Y_N} \includegraphics{https://static.e-olymp.com/content/49/49270e28ebc371c9e6e548fe5edf6353526f0ecb.jpg} \textbf{L} - довжина стержня. Стержень обертається на \textbf{2R} радіан (якщо не застрянет передчасно). \textbf{N} - кількість вершин многокутника. Вершини многокутника розміщені у порядку обходу проти годинникової стрілки. Вважайте, що многокутник простий, тобто його границя не перетинає і дотикається сама до себе. \textbf{N}, \textbf{X_i} та \textbf{Y_i} - цілі числа; \textbf{R} та \textbf{L} - десяткові дроби. Їх границі наступні: \textbf{1.0 }≤ \textbf{L} ≤ \textbf{500.0}, \textbf{1.0 }≤ \textbf{R }≤ \textbf{10.0}, \textbf{3} ≤\textbf{N }≤ \textbf{100}, \textbf{-1000 }≤ \textbf{X_i} ≤ \textbf{1000}, \textbf{-1000} ≤ \textbf{Y_i} ≤ \textbf{1000}, \textbf{X_1} ≤ \textbf{-1}, \textbf{Y_1} = \textbf{0}, \textbf{X_2} ≥ \textbf{1}, \textbf{Y_2 = 0}. \OutputFile Для кожного тесту у одному рядку вивести \textbf{x}- та \textbf{y}- координати кінцевого положення кінця \textbf{A}, відокремлюючи їх пропуском. Значення можуть містити похибку не більшу \textbf{0.001}. Після десяткової крапки можна виводити довільну кількість знаків. Наведені приклади відносяться до випадків на \textit{\textbf{Рисунку 2}}. Для зручності на \textit{\textbf{Рисунку 3}} показана анімація та фотографічне відтворення випадку (\textbf{C}). \includegraphics{https://static.e-olymp.com/content/7b/7b13b2e55ad078ef0bf7a0d5d7037554d9381312.gif} \includegraphics{https://static.e-olymp.com/content/1e/1e244d4685cf610b1ebf501717ded1cb8a1f0ddc.jpg} \textit{\textbf{Рисунок 3}}. Анімація та фотографічне відтворення випадку (\textbf{C})
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
4.0 2.0 8
-1 0
5 0
5 -2
7 -2
7 0
18 0
18 6
-1 6
4.0 2.0 4
-1 0
10 0
10 12
-1 12
4.0 1.0 7
-1 0
2 0
-1 -3
-1 -8
6 -8
6 6
-1 6
4.0 2.0 6
-1 0
10 0
10 3
7 3
7 5
-1 5
5.0 2.0 6
-1 0
2 0
2 -4
6 -4
6 6
-1 6
6.0 1.0 8
-1 0
8 0
7 2
9 2
8 4
11 4
11 12
-1 12
0 0 0
Вихідні дані #1
16.0 0.0
9.999999999999998 7.4641016151377535
0.585786437626906 -5.414213562373095
8.0 0.0
6.0 0.0
9.52786404500042 4.0