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;
    }

  • 相关阅读:
    DAY12 基本余数 运算符2
    DAY11 基本运算符
    DAY10 变量 常量 作用域
    DAY09 JAVA 类型转换
    DAY08 数据类型2
    DAY07 数据类型
    DAY06 JAVA基础语法1注释2标识符
    Beta冲刺集合
    Alpha冲刺集合
    高级软件工程实践总结
  • 原文地址:https://www.cnblogs.com/cchun/p/2620890.html
Copyright © 2011-2022 走看看