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可以互换
    因为他们是符合轮换对称的

  • 相关阅读:
    thinkpa R61i安装XP SATA的解决方法
    成都港宏4S店买的日产,送的无牌DVD 和可视倒车品牌是路特仕 80007
    设计模式之:解剖观察者模式
    java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)
    lephone 壁纸(裸婚时代 童佳倩姚笛壁纸)
    C# 让程序自动以管理员身份运行
    项目管理的5大过程组、9大知识域、44个管理流程的映射关系
    Spring Security 中如何让用户名不存在的错误显示出来(用户名不存在显示Bad credentials)
    eclipse老是报ThreadPoolExecutor$Worker.run()
    Unison文件夹同步工具
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350974.html
Copyright © 2011-2022 走看看