UVA 10522 Height to Area(已知三角形三高求面积)
2014-09-21 15:05
429 查看
UVA 10522 Height to Area(已知三角形三高求面积)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&page=show_problem&problem=1463
题意:
给你一个三角形的三条高的长度,要你求出该三角形的面积. 可能存在非法输入.
分析:
设三角形ABC的三边长为a,b,c,对应的三条高长为x,y,z.且该三角形面积为S. 那么有下面等式:
S=1/2*a*x = 1/2*b*y = 1/2*c*z
可得
a=2*S/x
b=2*S/y
c=2*S/z
令p=(a+b+c)/2=S(1/x+1/y+1/z),那么由海伦公式有S=
根号( p*(p-a)*(p-b)*(p-c)
)
将a,b,c的值带入海伦公式中令
val=(1/x+1/y+1/z)*(-1/x+1/y+1/z)*(1/x-1/y+1/z)*(1/x+1/y-1/z)可得:
S=1/根号(val)
那么什么时候的输入是非法的呢?
当(x==0或y==0或z==0)或val<=0时,输入非法.
AC代码:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&page=show_problem&problem=1463
题意:
给你一个三角形的三条高的长度,要你求出该三角形的面积. 可能存在非法输入.
分析:
设三角形ABC的三边长为a,b,c,对应的三条高长为x,y,z.且该三角形面积为S. 那么有下面等式:
S=1/2*a*x = 1/2*b*y = 1/2*c*z
可得
a=2*S/x
b=2*S/y
c=2*S/z
令p=(a+b+c)/2=S(1/x+1/y+1/z),那么由海伦公式有S=
根号( p*(p-a)*(p-b)*(p-c)
)
将a,b,c的值带入海伦公式中令
val=(1/x+1/y+1/z)*(-1/x+1/y+1/z)*(1/x-1/y+1/z)*(1/x+1/y-1/z)可得:
S=1/根号(val)
那么什么时候的输入是非法的呢?
当(x==0或y==0或z==0)或val<=0时,输入非法.
AC代码:
#include<cstdio> #include<cmath> using namespace std; const double eps=1e-10; int dcmp(double x) { if(fabs(x)<eps) return 0; return x<0?-1:1; } int main() { int n; scanf("%d",&n); while(n) { double x,y,z; scanf("%lf%lf%lf",&x,&y,&z); if(dcmp(x)==0 || dcmp(y)==0 || dcmp(z)==0) { printf("These are invalid inputs!\n"); --n; continue; } double val=(1/x+1/y+1/z)*(-1/x+1/y+1/z)*(1/x-1/y+1/z)*(1/x+1/y-1/z); if(dcmp(val)<=0) { printf("These are invalid inputs!\n"); --n; continue; } else printf("%.3lf\n",1/sqrt(val)); } return 0; }
相关文章推荐
- UVA 10522 Height to Area(三角形已知高求面积)
- UVA 10522 已知三高求三角型面积
- uva 10522 - Height to Area(几何)
- UVA 10522 - Height to Area(计算几何)
- UVA 10522 Height to Area
- UVa 10522 - Height to Area
- UVa 10522 - Height to Area
- UVa 10522 - Height to Area
- UVA 10347 已知三中线求三角形面积
- UVA 10347 Medians(已知三角形3中线长求面积)
- UVa 11186 Circum Triangle 圆周上的三角形面积之和
- 已知三角形三点坐标,求三角形的面积(二维和三维)
- hdu---(Tell me the area)(几何/三角形面积以及圆面积的一些知识)
- 已知三角形三点坐标,求三角形的面积
- 已知三角形三点坐标,求三角形的面积
- UVA 10060 || A hole to catch a man(多边形面积
- 已知三角形的三个点坐标,求三角形的面积
- UVA 10060 A Hole to Catch a Man(求多边形面积相关)
- uva 11437 Triangle Fun j求三角形的面积(计算几何)
- 已知三点,求三角形面积