您的位置:首页 > 其它

pku2208pyramids

2010-08-06 13:55 302 查看
题目:pku2208

题意:已知四面体的六条边长,求其体积。下面二种方法均可作为模板。

代码一:先求角度,再求体积。由wanglang515 编写
Memory: 176KTime: 16MS
]//AB, AC, AD, BC, BD, CD
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,e,f,v;
double angle1,angle2,angle3,angle;
while(scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f)!=EOF)
{
angle1=acos((a*a+b*b-d*d)/(2*a*b));
angle2=acos((a*a+c*c-e*e)/(2*a*c));
angle3=acos((b*b+c*c-f*f)/(2*b*c));
angle=(angle1+angle2+angle3)/2;
v=1/3.0*a*b*c*sqrt(sin(angle)*sin(angle-angle1)* sin(angle-angle2)*sin(angle-angle3));
printf("%0.4f/n",v);
}
return 0;
}


代码二:先求边,再求体积。由onchf编写。
Memory: 152KTime: 0MS
]#include <stdio.h>
#include <math.h>
int main()
{

double p , s , h , v ;
double xx , yy , x , y , z ;
double ab , ac , ad , bc , bd , cd ;
while (scanf("%lf%lf%lf%lf%lf%lf", &ab, &ac, &ad, &bc, &bd, &cd) != EOF)
{

xx = (ac * ac - bc * bc + ab * ab) / (ab * 2) ;
yy = sqrt(ac * ac - xx * xx) ;
x = (ad * ad - bd * bd + ab * ab) / (ab * 2) ;
y = (bd * bd - cd * cd + (x-xx) * (x-xx) - (x-ab) * (x-ab) + yy * yy) / (yy * 2) ;
z = sqrt(ad * ad - x * x - y * y) ;
p = (ab + ac + bc) / 2;
s = sqrt(p * (p-ab) * (p-ac) * (p-bc)) ;
h = z ;
v = s * h / 3 ;
printf("%.4lf/n" , v) ;
}
return 0 ;
}


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