#include <iostream>
using namespace std;
int main(){
int a,v1,v2;
while(~scanf("%d%d%d",&a,&v1,&v2)){
if(a==0){
printf("%s\n","0.0000000000");
continue;
}
if(v1<=v2){
printf("%s\n","Infinity");
continue;
}
printf("%.10f\n",(double)(v1*a)/(v1*v1-v2*v2));
}
}
官方题解很详细了 我就不赘述了;
注意考虑a=0的情况 此时无论如何都能到达
v1<=v2时不能到达;
先分解v1,
设船到原点的距离是r,容易列出方程
dtdr=v2cosθ−v1
dtdx=v2−v1cosθ
上下界都是清晰的,定积分一下:
0−a=v2∫0Tcosθdt−v1T
0−0=v2T−v1∫0Tcosθdt
直接把第一个式子代到第二个里面
v2T=v2v1(−a+v1T)
T=v12−v22v1a