题目链接:uva 10773 - Back to Intermediate Math
题目大意:有一天河,宽d,水流速度v,船速u,问说垂直过河和最快过河的时间差,如果不能过河输出“can't determine”。
解题思路:将u的速度分解成水平方向和竖直方向的两个速度,使水平方向速度恰好为v,船即可垂直过河,速度为竖直方向速度。
#include <cstdio>
#include <cstring>
#include <cmath>
const double eps = 1e-6;
int main () {
int cas;
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
double d, u, v;
scanf("%lf%lf%lf", &d, &v, &u);
printf("Case %d: ", i);
if (u-v < eps || u < eps || v < eps)
printf("can't determine\n");
else {
double x = sqrt(u*u - v*v);
printf("%.3lf\n", d/x - d/u);
}
}
return 0;
}