Cup(二分查找)
来源:互联网 发布:小米 免费网络短信 编辑:程序博客网 时间:2024/06/08 19:34
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1022 Accepted Submission(s): 365
Problem Description
The WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume of the water in the cup, can you tell us it height?
The radius of the cup’s top and bottom circle is known, the cup’s height is also known.
Input
The input consists of several test cases. The first line of input contains an integer T, indicating the num of test cases.
Each test case is on a single line, and it consists of four floating point numbers: r, R, H, V, representing the bottom radius, the top radius, the height and the volume of the hot water.
Technical Specification
- T ≤ 20.
- 1 ≤ r, R, H ≤ 100; 0 ≤ V ≤ 1000,000,000.
- r ≤ R.
- r, R, H, V are separated by ONE whitespace.
- There is NO empty line between two neighboring cases.
Output
For each test case, output the height of hot water on a single line. Please round it to six fractional digits.
Sample Input
1
100 100 100 3141562
Sample Output
99.999024
/*解题思路
主要考了二分查找 不过需要再次之前需要利用圆台的体积公式V= PI * h*(R*R +r*r + R*r)(h为圆台的高,R为圆台上面的半径,r为圆台下面的半径) 通过相似三角形可以得出m = (R -r) *h/H + r
然后带入体积公式 在求出来h就可以了
*/
#include<algorithm>#include<iostream>#include<math.h>#include<string.h>#define PI 3.1415926535898using namespace std;double r,R,H,V;double f(double h){ double m = (R-r)*h/H + r; return PI * h * (m * m + r * r + m * r)/3 - V;}int main(){ int ncase; while(cin>>ncase){ while(ncase--){ cin>>r>>R>>H>>V; double x1 = 0; double x2 = H; double mid ; double y1 = f(x1); double y2 = f(x2); while(fabs(y1-y2)>=0.000001){ mid = (x1 + x2)/2; if(f(mid)>=0){ x2 = mid; }else x1 = mid; y1 = f(x1); y2 = f(x2); } printf("%.6f\n",mid); } }}
- Cup(二分查找)
- (二分)cup
- hdu 2289 Cup (二分)
- HDU2289:Cup(二分 + 数学)
- HDOJ 题目2289 Cup(数学,二分)
- HDU 2289 Cup (二分搜索)
- HDU 2289 Cup(二分+圆台体积)
- HDU 2289 Cup(二分可以,但是除了二分呢?)
- HDU 2289 Cup(二分)
- HDU2289:Cup(二分)
- HDU2289:Cup(二分)
- HDU 2289 Cup 二分
- hdu 2289 Cup(二分)
- hdu2289 Cup(二分)
- hdu2289 Cup 二分搜索
- (二分)Cup -- HDOJ
- 折半查找(二分查找)
- 二分查找(折半查找)
- Vue Component 父子组件及组件选项
- Git客户端安装说明
- Yii文件(图片)上传时相关的方法
- 使用Apache Avro
- 使用Matlab批量的处理文件(文件的文件名类似)
- Cup(二分查找)
- 在Windows Server下搭建Gitblit服务器
- click函数嵌套click函数会出现重复函数的情况
- 设计模式初探-代理模式
- oracle中sqlcode和sqlerrm用法
- jzoj1749. 城市交通
- 关于Ionic3使用hewz/cordova-baidu-location插件定位的问题
- 将字符串中的空格替换成“%20”
- kubernetes资源对象--持久化存储Persistent Volume和Persistent Volume Claim