UVA10347 题解
0x00AC3375 · · 题解
大致题意
- 已知一个三角形的三条中线长度,求这个三角形的面积。
- 如果这样的三角形不存在输出
-1 。 - 输入有若干组数据。
分析
三角形的中线有现成的长度公式,式中的
可化为
解得
上述表达式中的
即可求解。如果求出的
需要说明的是:
- 多组数据,每组数据输出时必须要带换行符;
-
代码
#include<cstdio>
#include<cmath>
#include<cstdlib>
double A,B,C,a,b,c,p;
void kernel(void)
{
if(scanf("%lf%lf%lf",&A,&B,&C)==EOF) exit(0);
if(2*(B*B+C*C)<=A*A || 2*(C*C+A*A)<=B*B || 2*(A*A+B*B)<=C*C || A+B<=C || B+C<=A || C+A<=B)
{
printf("-1.000\n");
return;
}
a=2.*sqrt(2.*(B*B+C*C)-A*A)/3.;
b=2.*sqrt(2.*(A*A+C*C)-B*B)/3.;
c=2.*sqrt(2.*(A*A+B*B)-C*C)/3.;
p=(a+b+c)/2.;
printf("%.3lf\n",sqrt(p*(p-a)*(p-b)*(p-c)));
return;
}
int main()
{
while(1) kernel();
}