2208.txt
来自「北大ACM题目例程 详细的解答过程 程序实现 算法分析」· 文本 代码 · 共 45 行
TXT
45 行
#include"stdio.h"
#include"math.h"
double area( double l1, double l2, double l3 )
{
double p = ( l1 + l2 + l3 ) / 2;
return sqrt( p * (p-l1) * (p-l2) * (p-l3) );
}
double sq( double a )
{
return a * a;
}
int main()
{
double ab,ad,ac,bc,bd,cd,ah,dh,af,sabc,sbcd, hi, v, bh1, bh2;
scanf( "%lf %lf %lf %lf %lf %lf", &ab, &ac, &ad, &bc, &bd, &cd );
sabc = area( ab, bc, ac );
sbcd = area( bc, cd, bd );
ah = sabc * 2 / bc;
dh = sbcd * 2 / bc;
bh1 = sqrt( bd*bd - dh*dh );
if( cd*cd > bd*bd + bc*bc ) bh1 = -bh1;
bh2 = sqrt( ab*ab - ah*ah );
if( ac*ac > ab*ab + bc*bc ) bh2 = -bh2;
af = sqrt( ad*ad - sq( bh1 - bh2 ) );
hi = area( af, dh, ah ) * 2 / ah;
v = sabc * hi / 3;
printf( "%.4lf\n", v );
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?