zoukankan      html  css  js  c++  java
  • POJ 3737/三分

    题目链接[http://poj.org/problem?id=3737]

    题意:给出一个圆锥的表面积,求最大的体积,并输出最大体积的时候的圆锥的高度和底面积。 

    方法一:

      根据定理:圆锥的表面积一定的时候,当圆锥的斜边长度是底边半径三倍的时候,圆锥的体积最大。

    #include<cmath>
    #include<cstdio>
    const double PI = acos(-1.0);
    int main ()
    {
        double s,h,r,v;
        while(~scanf("%lf",&s))
        {
            r=sqrt(s/PI)/2;
            h=sqrt(8*r*r);
            v=PI*r*r*h/3;
            printf("%.2f
    %.2f
    %.2f
    ",v,h,r);
        }
        return 0;
    }

    方法二:

    /
       化简体积表达式可知,v和r的关系是一个抛物线函数,求最大值,则对r三分即可。
    
    */
    #include<cmath>
    #include<cstdio>
    const double PI = acos(-1.0);
    double s,h,r,v;
    double area(double R)
    {
        double L=s/(PI*R)-R;
        double H=sqrt(L*L-R*R);
        return PI*R*R*H/3.0;
    }
    int main ()
    {
        while(~scanf("%lf",&s))
        {
            double ll=0,rr=sqrt(s/(2*PI)),midl,midr;
            while(rr-ll>1e-5)
            {
                midl=(ll+rr)/2.0;
                midr=(midl+rr)/2.0;
                if(area(midl)>area(midr))
                    rr=midr;
                else
                    ll=midl;
            }
            r=(rr+ll)/2.0;
            double L=s/(PI*r)-r;
            h=sqrt(L*L-r*r);
            v=area(r);
            printf("%.2f
    %.2f
    %.2f
    ",v,h,r);
        }
        return 0;
    }

      

    想的太多,做的太少。
  • 相关阅读:
    Redis其他知识
    Mybatis的sql语句操作
    Redis
    mybatis插件原理
    mybatis工作原理
    Mybatis逆向工程
    mybatis缓存机制
    Mybatis查询
    zabbix api添加主机
    jenkins + bitbucket 实现 pr自动构建及build状态通知
  • 原文地址:https://www.cnblogs.com/pealicx/p/6194509.html
Copyright © 2011-2022 走看看