10545. Максимальный четырехугольник
В четырехугольнике, в который
вписана окружность, известны длины двух соседних сторон и его периметр.
Вычислить максимально возможное значение радиуса окружности.
Вход.
Первая строка содержит количество тестов n (n £ 100). Каждая следующая строка содержит три целых числа p,
a, b, где a и b – длины соседних сторон, а p
– периметр четырехугольника.
Выход. Для каждого теста вместе с его
номером вывести в отдельной строке максимально возможное значение радиуса
окружности с шестью точками после десятичной точки. Если такой окружности не
существует, то вывести фразу Eta Shombhob Na., которая в переводе с языка
Бангла обозначает «это не возможно».
2
20 5 6
20 10 12
Пример выхода
Case 1: 2.449490
Case 2: Eta Shombhob Na.
геометрия
Обозначим через c и d
длины двух других сторон. Поскольку в четырехугольник вписана окружность, то a
+ c = b + d. Учитывая, что a + b + c
+ d = p, получим a + c = b + d = p
/ 2. Откуда c = p / 2 – a,
d = p / 2 – b. Если длины сторон c и d будут
не положительными, то искомого четырехугольника не существует.
Площадь четырехугольника
выражается через периметр и радиус вписанной окружности по формуле: s =
(p/2) * r. Радиус вписанной окружности будет максимальным, если
будет максимальной площадь четырехугольника. Площадь четырехугольника
выражается через длины его сторон a, b, c, d и
противоположные углы B и D по формуле:
s =, где p’= p/2
– полупериметр.
Распишем
первый множитель: p' – a = = . Учитывая соотношение a + c = b + d, последнее выражение равно = с.
Аналогично p' – b = = = = d, p' – c = a, p' – d = b. Формулу площади четырехугольника таким
образом можно переписать в виде s =.
Площадь
s будет максимальной, если abcd cos2 = 0, то есть при B + D
= 180°. Сумма противоположных углов равна 180°,
следовательно четырехугольник с заданными длинами сторон будет иметь
максимальную площадь, если он вписан в окружность.
Искомая
максимальная площадь равна s = .
Для первого теста длины двух
других сторон равны c = 5, d = 4. Они положительны, следовательно
четырехугольник с заданными характеристиками существует и его площадь s
равна = 24.49490. Радиус
вписанной окружности равен r = 2 * s / p = 2.449490.
Для второго теста сумма двух
сторон больше периметра, значит такого четырехугольника не существует.
Для каждого теста читаем входные
данные, вычисляем длины двух других сторон c и d.
scanf("%lf %lf %lf",&p,&a,&b);
c = p / 2 - a; d = p / 2 - b;
Если четырехугольник со сторонами
a, b, c, d существует (их длины положительны), то
вычисляем радиус вписанной окружности и выводим результат. Иначе выводим
сообщение о невозможности построения четырехугольника.
if (c > 0 && d > 0)
{
s = sqrt(a * b * c * d);
r = 2 * s / p;
printf("Case
%d: %.6lf\n",i+1,r);
}
else printf("Case %d: Eta
Shombhob Na.\n", i+1);