搭帐篷说..

搭帐篷说..

 

Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   145       Accepted:   21

 

Description

青海玉树“4.14”地震发生后,灾民展开自救.因为物资紧缺,有些帐篷便被搭建成底座是三角形的四面体。而要最大限度的让灾民有遮风避雨之地,只能暂时按人数来平均支配空间.现只知道帐篷的棱长,想请你帮忙计算出这种帐篷的体积. 例如:

 

Input

多组输入,每组包含6个不大于1000的正整数,分别代表帐篷ABCD的六条棱AB,AC,AD,BC,BD,CD的长度.

 

Output

该帐篷的体积,精确到小数点后3位.

 

Sample Input

 

1 1 1 1 1 1
1000 1000 1000 3 4 5

 

Sample Output

 

0.118
1999.994


 

解析:

这道题的意思就是求四面体的体积,如果自己算,那会相当复杂,因此对于欧拉四面体问题,就用到向量和行列式的知识,最后就能得到如下式子:

具体过程,见http://course.szu.edu.cn/weijifen/picture/MC50024.htm

如果边长分别为a,b,c,m,n,l的话,V²=(4*a*a*b*b*c*c-a*a*(b*b+c*c-m*m)*(b*b+c*c-m*m)-b*b*(c*c+a*a-n*n)*(c*c+a*a-n*n)-c*c*(a*a+b*b-l*l)*(a*a+b*b-l*l)+(a*a+b*b-l*l)*(b*b+c*c-m*m)*(c*c+a*a-n*n))/144;代码就很简单了

# include<iostream>
# include<cstdio>
# include<cmath>
using namespace std;
int main()
{
    double a,b,c,m,n,l,V;
    while(cin>>l>>n>>a>>m>>b>>c)
    {
    V=sqrt((4*a*a*b*b*c*c-a*a*(b*b+c*c-m*m)*(b*b+c*c-m*m)-b*b*(c*c+a*a-n*n)*(c*c+a*a-n*n)-c*c*(a*a+b*b-l*l)*(a*a+b*b-l*l)+(a*a+b*b-l*l)*(b*b+c*c-m*m)*(c*c+a*a-n*n)))/12;
    printf("%0.3lf\n",V);
    }
   return 0;
}

 

posted on 2013-03-10 15:51  即为将军  阅读(331)  评论(0)    收藏  举报

导航