Задача. Катер движется по течению реки из пункта в A в пункт B и обратно с собственной скоростью [latex]v[/latex] км/час. Скорость течения постоянна — [latex]u[/latex] км/час. Расстояние между пунктами составляет [latex]s[/latex] км. Для любых неотрицательных действительных значений расстояния и скоростей вычислите время в пути.
Решение. Пусть катер движется со скоростью [latex]v[/latex] км/час, соответственно, учитывая скорость течения [latex]u[/latex] км/час, скорость катера движущегося по течению равна [latex]v+u[/latex] км/час и против течения — [latex]v-u[/latex] км/час. Используя физическую формулу [latex]t=\frac{s}{v}[/latex], где [latex]t[/latex]-время, [latex]s[/latex]-путь, [latex]v[/latex]-скорость, можем выразить время всего пути [latex]t=\frac{s}{v+u}+\frac{s}{v-u}[/latex]. Так как физическая величина [latex]t[/latex] всегда больше 0, и по математическому свойству делитель дроби не должен равняться нулю, имеем ограничение: [latex]v>u[/latex];
Решение на языке C++ имеет вид:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> #include <limits> using namespace std; int main() { double u, v, s, t; double inf = std::numeric_limits<double>::infinity(); cin >> u >> v >> s; t = (v <= u) ? inf : s / ( v + u ) + s / ( v - u ); cout << t; return 0; } |
Тесты
Входные данные
Физические величины: v, u, s
Выходные данные
Физическая величина t
u | v | s | t |
2 | 2 | 4 | inf |
1 | 2 | 6 | 8 |
5 | 4 | 8 | inf |