Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6684 Accepted Submission(s): 2062
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.
1 100 100 100 3141562
99.999024
1 #include <stdio.h> 2 #include <math.h> 3 double r, R, H, V; 4 #define PI 3.1415926535897932 5 double vv(double h) 6 { 7 double x=r+(R-r)*h/H; 8 return (PI*h*(x*x+r*x+r*r)/3.0); 9 } 10 double f(double z, double y) 11 { 12 double mid; 13 while((y-z)>1e-10) 14 { 15 mid=(z+y)/2.0; 16 if(vv(mid)<V) 17 z=mid; 18 else 19 y=mid; 20 } 21 return mid; 22 } 23 int main() 24 { 25 int a; 26 scanf("%d", &a); 27 while(a--) 28 { 29 scanf("%lf%lf%lf%lf", &r, &R, &H, &V); 30 printf("%lf\n", f(0,H)); 31 } 32 return 0; 33 }
原文:http://www.cnblogs.com/Noevon/p/5297365.html