zoukankan      html  css  js  c++  java
  • HDOJ 1411 校庆神秘建筑


    几何题真麻烦。。。。。

    校庆神秘建筑

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 1316    Accepted Submission(s): 411


    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
     

    Recommend
    lxj
     


    图片

    注意要判断钝角。。。。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>

    using namespace std;

    const double pi=3.1415926;

    double ab,ac,ad,bc,bd,cd;

    int main()
    {
    while(scanf("%lf%lf%lf%lf%lf%lf", &ab, &ac, &ad, &bc, &bd, &cd)!=EOF)
    {
        double ww,aa,bb,cc;
        double p;
        double sabc,sbad,scad;
        p=(ab+ac+bc)/2.;
        sabc=sqrt(p*(p-ab)*(p-ac)*(p-bc));
        p=(ab+ad+bd)/2.;
        sbad=sqrt(p*(p-ab)*(p-ad)*(p-bd));
        p=(ac+ad+cd)/2.;
        scad=sqrt(p*(p-ac)*(p-ad)*(p-cd));

        aa=(2*sabc)/(ab*ac);
        aa=asin(aa)/pi*180.;
        if(ab*ab+ac*ac<bc*bc) aa=180-aa;

        bb=(2*sbad)/(ab*ad);
        bb=asin(bb)/pi*180.;
        if(ab*ab+ad*ad<bd*bd) bb=180-bb;

        cc=(2*scad)/(ad*ac);
        cc=asin(cc)/pi*180;
        if(ac*ac+ad*ad<cd*cd) cc=180-cc;

        ww=(aa+bb+cc)/2.;

        double V=ab*ad*ac*sqrt(sin((ww-aa)/180.*pi)*sin((ww-bb)/180.*pi)*sin((ww-cc)/180.*pi)*sin((ww)/180.*pi));
        printf("%.4lf ",V/3.);
    }
        return 0;
    }



     欧拉四面体体积公式法。。。。。。。。。。。。。。。

    公式:
    欧拉四面体公式,用来求三棱椎的体积。
    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;

    如三棱椎OABC,O为顶点,ABC为底面三角形
    a-OA (线段OA 的长度为 a)
    b-OB (OB 长为 b)
    c-OC (.....)
    l-AB
    m-BC
    n-CA

    abc可以互换,lmc可以互换
    因为他们是符合轮换对称的

  • 相关阅读:
    Sql Server 2008卸载后再次安装一直报错
    listbox 报错 Cannot have multiple items selected when the SelectionMode is Single.
    Sql Server 2008修改Sa密码
    学习正则表达式
    Sql Server 查询第30条数据到第40条记录数
    Sql Server 复制表
    Sql 常见面试题
    Sql Server 简单查询 异步服务器更新语句
    jQuery stop()用法以及案例展示
    CSS3打造不断旋转的CD封面
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350974.html
Copyright © 2011-2022 走看看