Воробей летает всё время движения поезда: t = distAB / vTrain. Его общий путь равен vSparrow * t; вычислять каждую встречу и сумму бесконечных перелётов не требуется.
Вычисление пройденного воробьем пути
Воробей летает всё время движения поезда: t = distAB / vTrain. Его общий путь равен vSparrow * t; вычислять каждую встречу и сумму бесконечных перелётов не требуется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дано расстояние между пунктами A и B, скорость поезда, который движется от A к B, а также скорость воробья, который летит быстрее поезда. Пока поезд не достигнет пункта B, воробей совершает полёты от пункта B к встрече с поездом и обратно к пункту B. Требуется написать программу, которая вычислит общее пройденное воробьём расстояние в километрах.
Входные данные
distAB– расстояние между пунктами A и B (км);vTrain– скорость поезда (км/ч);vSparrow– скорость воробья (км/ч), причёмvSparrow > vTrain.
Выходные данные
- Одно число – суммарный путь, пройденный воробьём, с точностью до 2 знаков после запятой.
Пример
Input: 100 20 30
Output: 150.00
Ответ
Воробей летает всё время движения поезда: t = distAB / vTrain. Его общий путь равен vSparrow * t; вычислять каждую встречу и сумму бесконечных перелётов не требуется.
При мгновенных разворотах и постоянных скоростях:
distAB, vTrain, vSparrow = map(float, input().split())
if distAB < 0 or vTrain <= 0 or vSparrow <= vTrain:
raise ValueError('Invalid distance or speeds')
distance = distAB / vTrain * vSparrow
print(f'{distance:.2f}')
В примере поезд едет 100/20 = 5 часов, поэтому воробей пролетает 5×30 = 150 км. Предполагается, что он начинает полёт одновременно с поездом и не делает остановок; время разворотов в модели равно нулю.