Код (написан на Go): https://pastebin.com/0pKETCwQ
За качество кода прощения, сам еле разобрался в теме)
Объяснение:
Необходимо узнать пройденное расстояние за t секунд у двух велосипедистов:
s1 = u * t; s2 = v * t (в примере они равны 200 и 160 соответственно)
Также спустя t секунд стартует электромобиль, в этот момент его пройденное расстояние равно нулю.
Из условия знаем, что электромобиль сначала ОБОГНАЛ одного, а затем и другого велосипедиста. Для того, чтобы обогнать двоих, скорость электромобиля должна быть больше максимальной скорости из двух велосипедистов (в примере u > v, значит, скорость электромобиля точно больше u)
Теперь поиграем со скоростью электромобиля -- пусть оно будет равно, допустим, 11:
если посчитать пройденное расстояние электромобиля за каждую секунду и самого отстающего велосипедиста, то можно заметить, что с каждой секундой это расстояние сокращается на разницу их скоростей. Немного алгебры и получим формулу для получения времени, когда электромобиль перегонит одного из велосипедистов:
x = s / (k - v), где s - пройденное расстояние велосипедистом, k - скорость электромобиля и v - скорость велосипедиста
Из условия:
x1 - x2 = d, где d - интервал между моментами обгона, а x1 и x2 - формулы сверху относительно каждого из велосипедистов
А теперь наступает полная алгебра. Дальше я распишу всё на листочке, где все значения будут взяты из примера.
Мы получили два корня, что с ними делать? Во-первых, вспомним, что скорость электромобиля должна быть выше наибольшей скорости двух велосипедистов, а во-вторых, оба корня можно проверить по выше написанной формуле. Если на самом деле равенство выполняется, то это ответ к нашей задаче :)
Вроде ничего не упустил)