题目描述
有一个杯子,其形状向一个倒立的圆台。杯子的下底面半径为r,上底面半径为R,高为H。杯子中装有水,水的体积为 V。请你计算并输出水的高度。
样例
输入样例:
1
100 100 100 3141562
输出样例:
99.999024
算法1
时间复杂度
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int t;
int main()
{
cin>>t;
while(t--){
double r,R,H,V;
cin>>r>>R>>H>>V;
double v=3.141592653*H*(r*r+R*R+R*r)/3;
if(V>=v){
cout<<fixed<<setprecision(6)<<H<<endl;
continue;
}
if(R==r){
cout<<fixed<<setprecision(6)<<V/3.141592653/r/r<<endl;
continue;
}
double h1=r*H/(r-R);
double h2=cbrt(3*h1*h1*(3.141592653*h1*r*r/3-V)/3.141592653/r/r);//cbrt用来寻找立方根
cout<<fixed<<setprecision(6)<<h1-h2<<endl;
}
}