Это отверстие для мини-гольфа:
Внешняя граница представляет собой круг с радиусом 10 и центром (0,0). Внутренняя граница представляет собой круг с радиусом 3 и центром (0,5). Тройник в (0, -8). Предположим, что шар - это просто точка с радиусом 0.
Динамика мяча регулируется следующими правилами:
Мяч изначально поражен энергией 50 и с заданным углом.
- Угол отклоняется в декартовой системе координат, поэтому 0 ° означает прямо вправо, 90 ° - прямо вверх и т. Д.
Когда мяч ударяется о край внутреннего или внешнего круга, он отскакивает от круга, используя закон отражения.
Мяч теряет энергию при движении.
На каждую единицу земли, которую он покрывает, теряется 1 единица энергии.
Каждый раз, когда он отскакивает от стены, он теряет 5 единиц энергии.
Мяч останавливается, когда у него заканчивается энергия или когда он падает в лунку.
Если мяч ударяется о стену с энергией <= 5 единиц, он останавливается.
Он падает в отверстие, если у него есть энергия <10, когда он находится на расстоянии 1 от отверстия, в противном случае он продолжает двигаться.
Вызов
Учитывая координаты xy отверстия, верните угол, под которым вы можете ударить по мячу, чтобы шар упал в отверстие (если такой угол существует).
вход
В качестве входных данных возьмите x- и y-координаты центра отверстия в любой удобной форме. Входные данные могут быть взяты из STDIN (или ближайшей альтернативы), параметров командной строки или аргументов функции.
Выход
Напечатайте или верните угол в градусах, при котором шарик может попасть в тройник так, чтобы шарик упал в отверстие. Если такой угол существует, выходной сигнал должен находиться в диапазоне [0, 360), в противном случае выходной сигнал должен быть равен -1.