11152. Разноцветные цветы
Имеется круглая клумба. На ее
границе выбираются три точки. В полученный треугольник вписывается окружность.
Клумба разбита на три части (желтая, фиолетовая и красная), в каждую из которых
соответственно сажают подсолнечник, фиалки и розы. По заданным сторонам
треугольника необходимо определить площадь клумбы, занимаемую соответственно
подсолнечником, фиалками и розами.
Вход. Каждая
строка содержит длины трех сторон треугольника a, b, c (0 < a £ b £ c £ 1000).
Выход. Для каждого теста вывести площадь
клумбы, занимаемую соответственно подсолнечником, фиалками и розами. Площади
выводить с 4 знаками после десятичной точки.
3 4 5
13.6350 2.8584 3.1416
геометрия
По трем сторонам треугольника a, b,
c вычислим его площадь, используя
формулу Герона:
S = , где p =
Найдем радиусы большей и меньшей
клумб, являющиеся соответственно радиусами описанной около и вписанной в
исходный треугольник по формулам:
R = , r =
Площадь
клумбы, занимаемой розами, равна .
Площадь
клумбы, занимаемой фиалками, равна .
Площадь
клумбы, занимаемой подсолнечником, равна .
Определим константу следующим
образом:
#define PI acos(-1.0)
Читаем входные данные в
действительные переменные a, b, c.
Вычисляем площадь треугольника s по формуле
Герона. Далее вычисляем площади, отведенные под подсолнечник, фиалки и розы по
выше приведенным формулам соответственно в переменные yellow, violet, red.
while(scanf("%lf
%lf %lf",&a,&b,&c) == 3)
{
p = (a + b + c ) / 2;
s = sqrt(p * (p-a) * (p-b) * (p-c));
R = (a*b*c) / 4 / s;
r = 2 * s / (a + b + c);
red = PI * r * r;
violet = s - red;
yellow = PI * R * R - s;
printf("%.4lf %.4lf %.4lf\n",yellow,violet,red);
}