码迷,mamicode.com
首页 > 其他好文 > 详细

51nod 1629 B君的圆锥

时间:2017-10-23 22:14:13      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:star   难度   span   put   tool   F12   16px   output   www   

基准时间限制: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君的圆锥

标签:star   难度   span   put   tool   F12   16px   output   www   

原文地址:http://www.cnblogs.com/TheRoadToTheGold/p/7719336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!