To jest minigolf:
Zewnętrzna granica to okrąg o promieniu 10 i środku (0,0). Wewnętrzna granica to okrąg o promieniu 3 i środku (0,5). Trójnik ma wartość (0, -8). Załóżmy, że piłka jest tylko punktem o promieniu 0.
Dynamika piłki podlega następującym zasadom:
Piłka jest początkowo uderzona energią 50 i pod danym kątem.
- Kąt jest odwrócony w układzie współrzędnych kartezjańskich, więc 0 ° oznacza bezpośrednio w prawo, 90 ° jest bezpośrednio w górę i tak dalej.
Gdy piłka uderza w krawędź wewnętrznego lub zewnętrznego koła, odbija się od koła, stosując zasadę odbicia.
Piłka traci energię podczas ruchu.
Za każdą jednostkę ziemi, którą pokrywa, traci 1 jednostkę energii.
Za każdym razem, gdy odbija się od ściany, traci 5 jednostek energii.
Piłka zatrzymuje się, gdy skończy jej się energia lub wpadnie do dziury.
Jeśli piłka uderzy w ścianę z <= 5 jednostek energii, zatrzymuje się.
Wpada do dziury, jeśli ma energię <10, gdy znajduje się w odległości 1 od dziury, w przeciwnym razie nadal się porusza.
Wyzwanie
Biorąc pod uwagę współrzędne xy otworu, zwróć kąt, pod którym możesz uderzyć piłkę, aby piłka wpadła do otworu (jeśli taki kąt istnieje).
Wejście
Jako dane wejściowe weź współrzędne xiy osi środka otworu w dowolnej dogodnej formie. Dane wejściowe mogą być pobierane z STDIN (lub najbliższej alternatywy), parametrów wiersza poleceń lub argumentów funkcji.
Wynik
Wydrukuj lub zwróć kąt w stopniach, pod którym można uderzyć piłkę z trójnika, tak aby wpadła do otworu. Jeśli taki kąt istnieje, dane wyjściowe powinny mieścić się w zakresie [0, 360), w przeciwnym razie dane wyjściowe powinny wynosić -1.