Задача по информатике
Тимофею на день рождения родители подарили металлоискатель. Естественно, наутро мальчик отправился на поиски клада. Он предположил, что когда-то давно кто-то мог обронить золотую монету на древней прямой дороге и для облегчения поиска придумал систему координат. Ось абсцисс OX направлена вдоль дороги, а ось ординат OY направлена вверх.
Устройство работает следующим образом: на его индикаторе выставляется натуральное число r и если ровно на этом расстоянии имеется золотой предмет, то загорается зелёная лампочка.
Сначала юный кладоискатель выставил число r1 в точке x = 0, затем отошёл в точку с абсциссой x = a и выставил число r2, как показано на рисунке. Новичкам везёт, оба раза загорелась зелёная лампочка. Определите координаты потерянной когда-то давно золотой монетки.
Формат входных данных
Программа получает на вход три целых числа a, r1 и r2, записанных в отдельных строках (1 ≤ a; r1; r2 ≤ 109).
Формат выходных данных
Выведите в двух строках два числа – координаты сокровища (сначала – абсциссу, потом – ординату). Значение ординаты должно быть не положительным (монетка не может висеть в воздухе). Гарантируется, что входные данные таковы, что ответ существует и обе координаты монеты будут целыми числами.
Система оценки
Решения, правильно работающие при 1 ≤ a; r1; r2 ≤ 100, будут оцениваться в 40 баллов.
Решения, правильно работающие при 1 ≤ a; r1; r2 ≤ 105, будут оцениваться в 60 баллов.
Пример
стандартный ввод
стандартный вывод
21
10
17
6
-8
Замечание
Рисунок соответствует примеру из условия.
from math import prod, isqrt
a, r1, _ = sides = tuple(map(int, map(input, ('',) * 3)))
p = sum(sides)
sq = prod(map(int.__sub__, (p,) * 4, map((2).__mul__, (0,) + sides))) // (4 * a * a)
print(isqrt(r1 * r1 - sq), -isqrt(sq), sep = '\n')