e-olymp 3604. Крейсерская скорость

Задача

Выдающийся ямайский спринтер Усейн Болд выиграл на Олимпиаде-2012 две золотые медали на дистанциях 100 и 200 метров.

Эти обе дистанции нам интересны тем, что могут при определённом научном подходе, предоставлять тренеру информацию в определении оптимального состава сборной команды страны для эстафеты 4×100 метров.

Так как обе дистанции очень коротки, то тактика бега здесь довольно проста: сначала спортсмен за какое-то стартовое время (время разгона) разгоняется до своей максимально возможной на данный момент скорости, а оставшуюся часть дистанции бежит с этой постоянной скоростью, которую назовём крейсерской скоростью. Естественно, что при формировании команды в эстафету нужно на старт ставить спортсмена, который на этой дистанции показывает наилучшее время, а на 3 оставшихся этапа отбирать из числа оставшихся спортсменов трёх с наилучшей крейсерской скоростью.

Тренер легкоатлетической сборной вашей страны поручил вам, как одному из лучших программистов, помочь ему с формированием состава сборной на эстафету. Для оказания оперативной помощи тренеру вам необходимо быстро решить следующую задачу: зная результаты спортсмена на дистанциях 100 и 200 метров, определить его крейсерскую скорость. Вам также известно, что крейсерская скорость и время разгона каждого из спортсменов на протяжении ваших исследований не изменялись.

Входные данные

В единственной строке задано 2 вещественных числа, разделённых единичным пробелом, соответственно результат спортсмена на дистанциях 100 и 200 метров.

Выходные данные

В единственной строке выведите крейсерскую скорость спортсмена с точностью не менее 6-ти знаков после запятой.

Тесты

Входные данные Выходные данные
9.63  19.32 10.319917
12.49  21.30 11.350737
7.46  13.58 16.339869

Код программы:

Решение задачи

Для решения этой задачи мы воспользуемся формулами скорости при равноускоренном движении. Нам было дано время прохождения двух дистанций в 100 метров и 200 метров. Так как спортсмен разгоняется на дистанции 100 метров, то оставшиеся 100 метров из 200 он бежит с постоянной скоростью. Чтобы узнать время за которое он пробегает вторые 100 метров, мы вычитаем из второго значения времени первое. Дальше мы пользуемся формулой нахождения скорости по расстоянию и времени [latex]\frac{s}{t}[/latex]. Полученая скорость и будет крейсерской скоростью.

Ссылки

  • Задача на сайте e-olymp
  • Код решения в Ideone

А19

Задача: Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу друг другу, если известны их начальные скорости,ускорения и начальное расстояние между ними.

[latex]a_1[/latex] [latex]a_2[/latex] [latex]V_{01}[/latex] [latex]V_{02}[/latex] [latex]S[/latex] [latex] t[/latex] Комментарий
1 1 1 1 1 0.41 Пройден
3.2 2.1 3 7.5 20.8 1.45 Пройден
0 0 4 1 8 1.6 Пройден

В задаче нужно найти время,  через которое встретятся два тела, двигающихся равноускоренно, зная начальные скорости и ускорения этих тел, а также расстояние между ними.

Для решения этой задачи  использовались формулы:

[latex]S=V_0t+\frac{at^2}{2}[/latex]

Так как расстояние делится на две части, то получаем:

[latex]S=V_{01}t+\frac{a_1t^2}{2}[/latex],

[latex]S=S_0 — V_{02}t+\frac{a_2t^2}{2}[/latex]

Значит  [latex]S_0=V_{01}t+\frac{a_1t^2}{2}+V_{02}t+\frac{a_2t^2}{2}[/latex]. Получаем уравнение времени:

[latex]t^2(\frac{a_1+a_2}{2})+t(V_{01}+V_{02})-S_0=0[/latex]

Упрощаем коэффициенты  уравнения :

[latex]a=\frac{a_1+a_2}{2}[/latex],    [latex]b=V_{01}+V_{02}[/latex],    [latex]at^2+bt-S_0=0[/latex]

Если [latex]a=0[/latex],  находим корень уравнения  по формуле [latex]t=\frac{S_0}{b}[/latex]. Если же [latex]a[/latex] не равняется нулю, находим дискриминант по формуле [latex]D=b^2+4aS[/latex], дискриминант в данной задаче всегда положителен. Нет смысла находить время по формуле [latex]t=\frac{b^2-\sqrt{D}}{2a}[/latex], так как время не может быть отрицательным, остается использовать [latex]t=\frac{b^2+\sqrt{D}}{2a}[/latex] — это и будет искомое время.

Ссылка на Ideone

Код для Java

Ссылка на Ideone