Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 186 Accepted Submission(s): 106
3 0.222018 23.901887 121.909183 39.096669 110.210922 20.270030 138.355025 2028.716904 25.079551
1.561582 -1 -1x=v*t*cosα,y=v*t*sinα-g*t^2/2;消去x,得:y=v*sinα*x/(v*cosα)-g*(x^2/(v^2*conα^2))/2;最后得到:g*x^2tanα^2-2*v^2*x*tanα+2*v^2*y+g*x^2=0;a=g*x^2; b=-2*v^2*x; c=2*v^2*y+g*x^2;dt=b*b-4*a*c;tanα=(-b+(-)sqrt(dt))/2*a;最后判断α是否满足~#include <iostream> #include <math.h> using namespace std; #define PI acos(-1.0) #define g 9.8 double x,y,v,dt,tan_jd1,tan_jd2,jd1,jd2,a,b,c,MAX=PI/2,MIN=0; int main() { int n; while(scanf("%d",&n)!=EOF) { while(n--) { scanf("%lf%lf%lf",&x,&y,&v); a=g*x*x; b=-2*v*v*x; c=2*v*v*y+g*x*x; dt=b*b-4*a*c; tan_jd1=(-b+sqrt(dt))/(2*a); tan_jd2=(-b-sqrt(dt))/(2*a); jd1=atan(tan_jd1); jd2=atan(tan_jd2); if((jd1>=MIN && jd1<=MAX) && (jd2>=MIN && jd2<=MAX)) printf("%.6lf/n",jd1<jd2?jd1:jd2); else if(jd1>=MIN && jd1<=MAX) printf("%.6lf/n",jd1); else if(jd2>=MIN && jd2<=MAX) printf("%.6lf/n",jd2); else printf("-1/n"); } } return 0; }