UVa 10773 Back to Intermediate Math 题解

· · 题解

题目大意

有一条宽 d 米的河,流速为 v 米每秒,你的船最快速度为 u 米每秒。有两种方案过河:在最短时间内过河而不管船被推向何方;走最短的距离而始终保持直线行驶。求两种方案所花时间的差。

`Case xx:` 若没有两种路,输出 `can't determine` 否则输出 $P$ 保留3为小数。 # 题目思路 很简单的几何题。 首先要判断无解的情况,即当 $u=0$ 或者 $v=0$ (河水流不动,方案一致;船走不动,没法计算)的情况。 然而还有一种。先看两种方案。 方案1:最短时间,即 $t_1=\dfrac{d}{v}$。 方案2:画一个直角三角形,$u$ 为斜边而 $v$ 为直角边。可以想到,若 $u^2-v^2\le0$ 时无解,而该方案的时间为 $t_2=\dfrac{d}{\sqrt{u^2-v^2}}$。 答案为 $|t_1-t_2|$。 ```cpp #include <iostream> #include <iomanip> #include <cmath> using namespace std; int main(){ int _,__=0; cin>>_; while(_--){ double d,v,u,p1,p2; cin>>d>>v>>u; cout<<"Case "<<(++__)<<": "; if(int(u)==0.00||int(v)==0.00||u*u-v*v<=0.00){ cout<<"can't determine"<<endl; continue; } p1=d/u,p2=d/sqrt(u*u-v*v); cout<<fixed<<setprecision(3)<<fabs(p1-p2)<<endl; } return 0; } ``` **EOF**