51nod 1629 B君的圆锥

Posted 日拱一卒 功不唐捐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1629 B君的圆锥相关的知识,希望对你有一定的参考价值。

基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
技术分享 收藏
技术分享 关注
B君要用一个表面积为S的圆锥将白山云包起来。
 
B君希望包住的白山云体积尽量大,B君想知道体积最大可以是多少。
 
注意圆锥的表面积包括底面和侧面。
Input
一行一个整数,表示表面积S。(1 <= S <= 10^9)
Output
一行一个实数,表示体积。
Input示例
8
Output示例
1.504506

圆锥表面积s=π*r*r + π * r*l
体积=π*r*r*h/3

r:底面圆半径
l:母线长

三分半径

#include<cstdio>
#include<cmath>

const double pi=acos(-1.0);

double s;

double solve(double r)
{
    double l=(s-pi*r*r)/(pi*r);
    double h=sqrt(l*l-r*r);
    return pi*r*r*h/3;
}

int main()
{
    scanf("%lf",&s);
    double l=0,r=s,mid1,mid2;
    int T=100;
    while(T--)
    {
        mid1=r/3+l*2/3;
        mid2=l/3+r*2/3;
        if(solve(mid1)<solve(mid2)) l=mid1;
        else r=mid2;
    }
    printf("%.6lf",solve(mid1));
}

 

以上是关于51nod 1629 B君的圆锥的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1629 B君的圆锥

51nod1269 B君的圆锥

51nod B君的圆锥(数学)

1629 B君的圆锥

1629 B君的圆锥

51nod 1632概率与期望B君的连通