Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1053 Accepted Submission(s): 590

1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cmath> 6 #include<cstring> 7 using namespace std; 8 const double G=9.8; 9 const int INF=0x3f3f3f3f; 10 const double PI=acos(-1.0); 11 double h,l,v; 12 double js(double mid){ 13 double t=l/(v*cos(mid)); 14 double H=v*sin(mid)*t-1.0/2*G*t*t+h; 15 return H; 16 } 17 18 void sanfen(double l,double r){ 19 double m,H=0,temp,mm; 20 while(r-l>=1e-10){ 21 m=(l+r)/2; 22 mm=(m+r)/2; 23 if(js(m)>=js(mm))H=js(m),r=mm;//不加等号就错了,这个相当于左移,所以加等号; 24 else l=m; 25 } 26 printf("%.2lf\n",H); 27 } 28 int main(){ 29 while(~scanf("%lf%lf%lf",&h,&l,&v),h||l||v){ 30 sanfen(0,PI/2.0); 31 } 32 return 0; 33 }
原文:http://www.cnblogs.com/handsomecui/p/4914744.html