1.题目编号
1004
2.简单题意
一个人要射箭,并且他射出的箭的初速度是一定的,请你选择一个角度使射出的箭射中目标,若没击中则输出-1
3.解题思路
物理题目啊,由题意可知随着x增加,y先增大后减小,因此要用三分求解,但要注意判断能否击中目标
4.感想
第一道三分的题目,并且还是和物理题联系的,很难做啊,这种题还是不会啊
5.代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const double pi=3.141592653589;
int T;
double x,y,v;
double max,min,M;
double a,b;
double t,h;
cin>>T;
while(T--)
{
max=pi/2;
min=0;
M=(max+min)/2;
cin>>x>>y>>v;
while(max-min>1e-8)
{
a=v*cos(M);
b=v*sin(M);
t=x/a;
h=b*t-9.8/2*t*t;
if(h>=y)
max=M;
else
min=M;
M=(max+min)/2;
}
if(M<1e-8||pi/2-M<1e-8)
cout<<"-1"<<endl;
else
printf("%.6f\n",M);
}
}