UVa 10773 Back to Intermediate Math 题解
Alea
·
·
题解
题目大意
有一条宽 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**