Условие
Катер движется по течению реки из пункта в A в пункт B и обратно с собственной скоростью [latex]v[/latex] км/час. Скорость течения постоянна — [latex]u[/latex] км/час. Расстояние между пунктами составляет [latex]s[/latex] км. Для любых неотрицательных действительных значений расстояния и скоростей вычислите время в пути.
Входные данные
Физические величины: [latex]v[/latex] , [latex]v[/latex] , [latex]v[/latex]
Выходные данные
Физическая величина [latex]t[/latex]
Решение
По условию, мы проверяем любые неотрицательные действительные значения, следовательно условие, что [latex]t[/latex] не может быть меньше нуля не выполняется только если скорость течения будет превышать скорость катера (т.е. он не сможет плыть против него). При нарушении этого условия или при получении 0 в знаменателе будем выводить -1.
Время в пути можно найти по формуле: [latex]t=\frac{s}{v}[/latex]
Так как к нашему условие добавляется влияние течения, то скорость по его направлению будет
[latex]v+u[/latex], а против — [latex]v-u[/latex]. Следовательно получаем формулу для нахождения времени, необходимого на преодоление пути от А до В и обратно:
[latex]t=\frac{s}{(v+u)} + \frac{s}{(v-u)}[/latex]
1 2 3 4 5 6 7 8 9 10 11 |
class Test { static function main() { var output = Sys.stdout(); var s:Int = Std.parseInt(Sys.stdin().readLine()); var v:Int = Std.parseInt(Sys.stdin().readLine()); var u:Int = Std.parseInt(Sys.stdin().readLine()); var t : Float = if( v ==u || u < v ) -1 else s/(v+u)+s/(v-u); output.writeString(t); } } |
На TryHaxe!
Тесты
s | v | u | t |
---|---|---|---|
6 | 1 | 2 | -1 |
6 | 2 | 1 | 8 |
60 | 12 | 4 | 11.25 |