Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Абдулла спрятался от выстрелов за забором,
но красноармеец Сухов решил применить рикошет пули от цистерны, чтобы попасть в бандита.
Известно, что при рикошете угол падения равен углу отражения (см. рис).
Напишите программу, которая рассчитает направление выстрела.
В первой строке ввода содержатся четыре целых числа – координаты цели `X_a`, `Y_a` (`0\ ≤\ X_a,\ Y_a\ ≤\ 10^4`)
и координаты стрелка `X_s`, `Y_s` (`0\ ≤\ X_s,\ Y_s\ ≤\ 10^4`).
Во второй строке четыре целых числа – координаты концов забора `X_1`, `Y_1`, `X_2`, `Y_2` (`0\ ≤\ X_1,\ Y_1,\ X_2,\ Y_2\ ≤\ 10^4`)
В третьей строке три целых числа – координаты центра цистерны `X_c`, `Y_c` (`0\ ≤\ X_c,\ Y_c\ ≤\ 10^4`)
и ее радиус `R_c` (`1\ ≤\ R_c\ ≤\ 1000`). Цистерна и забор не пересекаются и не соприкасаются.
Координаты цели и стрелка находятся вне цистерны и не рядом с забором. Отрезок между стрелком и целью пересекается (или соприкасается) с отрезком забора.
Вывести одно число – направление выстрела `D` в градусах с точностью не менее `10^{-4}` (`0\ ≤\ D\ <\ 360`).
Если попасть в цель невозможно, то вывести сообщение "No solution" (без кавычек).
Примечание. Пуля не может пролететь сквозь забор или соприкасаться с забором. В тестах с существующим решением траектория пули проходит на значительном удалении от забора (не менее 0.1).
Пример ввода
4 4 4 0
3 2 5 2
1 2 1