题意;给定一个圆台杯子的R,r,H和里面水的体积V
求h
二分。。。。。。。。。。。。。。。。。
因为解不出来h。。。。。。。。。。。。
View Code
1 /* 2 几何 3 圆台体积 4 V=1/3*pi*h*(r1*r1+r2*r2+r1*r2) 5 6 */ 7 #include<stdio.h> 8 #include<string.h> 9 #include<stdlib.h> 10 #include<algorithm> 11 #include<iostream> 12 #include<queue> 13 //#include<map> 14 #include<math.h> 15 using namespace std; 16 typedef long long ll; 17 //typedef __int64 int64; 18 const int maxn = 105; 19 const int inf = 0x7fffffff; 20 const double pi=3.141592653; 21 double r,R,H,v; 22 23 double solve( double h ){ 24 double r2=h*(R-r)/H+r; 25 return pi*h*( r2*r2+r*r+r2*r )/3.0; 26 } 27 const double eps = pow(10.0,-8); 28 int main(){ 29 int ca; 30 scanf("%d",&ca); 31 while( ca-- ){ 32 scanf("%lf%lf%lf%lf",&r,&R,&H,&v); 33 double lo,hi; 34 lo=0; 35 hi=H; 36 double mid; 37 while( hi-lo>eps ){ 38 mid=( lo+hi )/2.0; 39 if( solve( mid )==v ) 40 break; 41 if( solve( mid )>v ) 42 hi=mid-eps; 43 else 44 lo=mid+eps; 45 } 46 printf("%.6lf\n",mid); 47 } 48 return 0; 49 }