11164. Раздел королевства
Король страны Геометрии в
заботах. У него есть три сына, которые постоянно ссорятся. Король применял
разные методы примерения, но все напрасно. И это его очень беспокоило.
“А что если разделить королевство?”, – подумал король. Он пригласил советников и описал свой план.
Король открыл карту.
Королевство имеет форму
треугольника с вершинами 'A', 'B', 'C'. Король провел линию от B к E (E -
произвольная точка на отрезке AC) и линию от C к F (F - произвольная точка на
отрезке AB). Пересечение BE и CF обозначено через X.
Теперь образовалось четыре части
- a (треуголььник BFX), b (треуголььник BCX), c (треуголььник CEX) и d (четырехугольник AEXF). Король решил
отдать области a, b, c
трем сыновьям. А область d станет
новым королевством.
Вы - главный советник. Король
сообщает Вам значения a, b и c.
Вам необходимо найти значение d. Если
его найти невозможно, то сообщить об этом.
Вход. Состоит из не более чем 1000
тестов. Каждый тест содержит три неотрицательных действительных числа a, b,
c (разделенных пробелом). Входные
данные заканчиваются тестом у которого a
= -1 и он не обрабатывается.
Выход. Для каждого теста вывести его
номер, начиная с 1. В следующей строке вывести d (величина области королевства после раздела) округленное до 4
десятичных знаков или 'Poor King!' (без кавычек) если значение d определить невозможно. Формат выходных
данных показан в примере.
1 2 1
2 4 2
1 3 3
-1 0 0
Set 1:
2.0000
Set 2:
4.0000
Set 3:
5.0000
геометрия
Искомую площадь d будем искать как сумму площадей d1
и d2.
Треугольники BFO и EFO имеют общее основание FO. Следовательно их площади d1 и a
относятся как
высоты, опущенные из вершин E и B на прямую FO. Аналогично треугольники BCO и ECO имеют общее основание
То есть , откуда .
Теперь рассмотрим треугольники CAF и CBF с основаниями AF и BF. Они имеют одинаковую высоту, опущенную из вершины С на прямую AB. Следовательно площади этих треугольников относятся как
длины сторон AF и BF.
Рассмотрим треугольники EAF и EBF с основаниями AF и BF. Они имеют одинаковую высоту, опущенную из вершины E на прямую AB. Площади этих треугольников относятся как длины сторон AF и BF.
Имеем:
,
Следовательно . Поскольку d1 уже найдено, то имеем равенство с одним неизвестным d2:
, ,
,
Если , то решения не существует.
Читаем входные данные для каждого теста, вычисляем значение площади d1.
while(scanf("%lf
%lf %lf",&a,&b,&c), a != -1.0)
{
d1 = a * c / b;
printf("Set
%d:\n",cs++);
Проверяем условие b > d1
и вычисляем площадь d2. Искомая площадь d
равна d1 + d2.
if (b >
d1)
{
d2 = (a + d1) * (c + d1) / (b - d1);
printf("%.4lf\n",d1+d2);
}
else printf("Poor King!\n",d1+d2);
}