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