zoukankan      html  css  js  c++  java
  • HDU2289_Cup_二分求圆台体积

    题目大意: 
            一个圆台型的杯子,告诉你杯子的水的体积,要求水的高度。
    解题思路:
            将水的高度作为x,然后化简出f(x)方程,二分求x,至于圆台的体积公式:v = pi * h * (R*R+R*r+r*r) / 3; 水的高度根据直角梯形的面积公式即可求解。
    代码:

    /*
    *圆台体积公式:v = pi * h * (R*R+R*r+r*r) / 3;
    *水的体积: v = pi * sqrt(r*q) * (r*R + sqrt(r*R)*r+r*r) / 3;
    */
    #include<iostream>
    #include<cmath>
    using namespace std;
    const double pi = acos(-1.0);
    const double eps = 1.0e-10;

    double getWaterV(double R, double r, double h, double m)
    {
        double y = (r * h + m * R - r * m) / h;
        return pi * m * (y * y + y * r + r * r) / 3;
    }

    int main(void)
    {
        int cas;
        scanf("%d", &cas);
        while(cas--)
        {
            double r, R, h, v;
            scanf("%lf %lf %lf %lf", &r, &R, &h, &v);

            double left = 0, right = h, m;
            while(abs(left - right) > eps)
            {
                m = (left + right) / 2;
                if(getWaterV(R, r, h, m) < v)
                    left = m;
                else
                    right = m;
            }
            printf("%.6lf\n", m);
        }
        return 0;
    }

  • 相关阅读:
    PY个树状数组
    PY 个板子计划【雾
    PY个欧拉筛
    【NOI2007】项链工厂 ——老题新做.jpg
    Min-Max 容斥的证明
    51nod 1963 树上Nim
    ●BZOJ 3566 [SHOI2014]概率充电器
    ●BZOJ 3640 JC的小苹果
    ●BZOJ 1444 [Jsoi2009]有趣的游戏
    ●Joyoi Dotp 驱逐猪猡
  • 原文地址:https://www.cnblogs.com/cchun/p/2620890.html
Copyright © 2011-2022 走看看