您的位置:首页 > 其它

hdu 1411 校庆神秘建筑(计算几何)

2013-08-08 11:25 260 查看


校庆神秘建筑

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 1370 Accepted Submission(s): 428



Problem Description

杭州电子科技大学即将迎来50周年的校庆,作为校庆委员会成员的我被上级要求设计一座神秘的建筑物来迎合校庆,因此我苦思冥想了一个月,终于设计出了一套方案,这座建筑物有点象古老埃及的金字塔,不过这个神秘建筑的根基是三角形的而不是矩形的,从数学的专业角度来讲,它是四面体。当我打算上交我的设计图纸的时候发现,我不知道怎么计算这个神秘建筑的体积(我知道这座建筑的各边的尺寸),于是我找来了聪明的你来帮助我解决这个难题。

Input

输入文件包含6个不超过1000的实数,每个数之间用空格隔开。每个数代表金字塔ABCD的一条棱边长度,棱边排序如下:AB,AC,AD,BC,BD,CD。

Output

输出数据应是一个实数,表示金字塔的体积,精确到4位小数。

Sample Input

2 2 2 2 2 2


Sample Output

0.9428


Author

Eddy

Source

HDU 2006-5 Programming Contest

Recommend

lxj

题解:欧拉体积公式求四面体体积

#include<stdio.h>
#include<math.h>
double p,q,r,n,m,l,res;
double a,b,c,d,e,f;
double v[3][3];
void init()
{
v[0][0]=p*p;
v[0][1]=(p*p+q*q-n*n)/2;
v[0][2]=(p*p+r*r-m*m)/2;
v[1][0]=(p*p+q*q-n*n)/2;
v[1][1]=q*q;
v[1][2]=(q*q+r*r-l*l)/2;
v[2][0]=(p*p+r*r-m*m)/2;
v[2][1]=(q*q+r*r-l*l)/2;
v[2][2]=r*r;
}
void cal()
{
a=v[0][0]*v[1][1]*v[2][2];
b=v[0][1]*v[1][2]*v[2][0];
c=v[0][2]*v[1][0]*v[2][1];
d=v[0][2]*v[1][1]*v[2][0];
e=v[0][1]*v[1][0]*v[2][2];
f=v[0][0]*v[1][2]*v[2][1];
res=(a+b+c-d-e-f);
}
int main()
{
while(scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&n,&m,&l)>0)
{
init();
cal();
printf("%.4lf\n",sqrt(res/36));
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: