#include<iostream>
#include<cmath>
#define PI 3.1415926535898
using namespace std;
double Case,T,r,R,H,V,VT;
int main(){
cin>>Case;
while(Case--){
cin>>r>>R>>H>>V;
double T,_r,_V;
if(r==R){
printf("%.6lf\n",V/(PI*r*r));
continue;
}
if(r>R)
T=r*H/(r-R);
else
T=R*H/(R-r);
double low,high,mid;
low=0;
high=H;
mid=0;
while(fabs(low-high)>1e-7){
mid=(low+high)/2;
if(r>R){
_r=r*(T-mid)/T;
_V=1/3.0*PI*mid*(r*r+r*_r+_r*_r);
}
else{
_r=r*(T-H+mid)/(T-H);
_V=1/3.0*PI*mid*(r*r*+_r*r+_r*_r);
}
if(_V<V)
low=mid;
else if(_V>V)
high=mid;
else
break;
}
printf("%.6lf\n",mid);
}
return 0;
}
HDOJ CUP 二分求截锥体高
最新推荐文章于 2018-10-22 22:06:43 发布