Ю 2.31

Задача

График движения путников к задаче Ю 2.31


График движения путников к задаче Ю2.31

Встреча. Из пункта А в пункт В выехал велосипедист со скоростью [latex]v_{0} [/latex] км/час. Одновременно навстречу ему из пункта В двинулся «автостопом» другой путник.[latex]s_{1} [/latex] м он двигался со скоростью [latex]v_{1} [/latex] м/час, [latex]s_{2} [/latex] м — со скоростью [latex]v_{0} [/latex] км/час, [latex]s_{3} [/latex] м — со скоростью [latex]v_{3} [/latex] км/час. Через сколько часов после старта и в какой точке путники встретились?

 Тесты

v0, км/час v1, м/час v3, км/час s1, м s2, м s3, м place, км time, час Комментарии
40 15000 10 20000 40000 40000 66.667 1.667 Пройден (встреча на первом промежутке)
10 5000 60 10000 60000 30000 55.0 5.5 Пройден (встреча на первом промежутке)
8 5000 30 10000 10000 80000 37.368 4.671 Пройден (встреча на первом промежутке)
-300 30000 23333 22222 5454 555.1 Неправильно введены данные Не пройден
10 2222 3333 0 -4444 11.6 Неправильно введены данные Не пройден

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

Можно предположить, что весь путь в задаче представлен суммой [latex]ss=s_{1}+s_{2}+s_{3}[/latex]. Для начала переведем все величины  в единицы СИ:

Из метров в километры:

[latex]s_{1}=s_{1}*0.001 \Leftrightarrow s_{1}=\frac{s_{1}}{1000}[/latex],

[latex]s_{2}=s_{2}*0.001 \Leftrightarrow s_{2}=\frac{s_{2}}{1000}[/latex],

[latex]s_{3}=s_{3}*0.001 \Leftrightarrow s_{3}=\frac{s_{3}}{1000}[/latex].

Из метров/час в километры/час: [latex]v_{1}=v_{1}*0.001 \Leftrightarrow v_{1}=\frac{v_{1}}{1000}[/latex]

Найдем место встречи. Тут может быть три случая:

  1. Встреча двух путников на первом промежутке пути. Тогда время встречи можно вычислить по формуле: [latex]time = \frac{ss}{( v_{0} + v_{1} )}[/latex] , а место встречи —  [latex]place = time * v_{0}[/latex]
  2. Встреча двух путников на втором промежутке пути: Тогда время встречи можно вычислить по формуле: [latex]time =\frac{ss — s_{1} — ( v_{0} * t_{1} ) }{ v_{0} + v_{0} }[/latex] , а место встречи — [latex]place = ( t_{1} + time ) * v_{0}[/latex].
  3. Встреча двух путников на третьем промежутке пути: Тогда время встречи можно вычислить по формуле: [latex]time = \frac{ ss — s_{1} — s_{2} — ( v_{0} * t_{2} )}{ v_{0}+ v_{3} }[/latex], а место встречи — [latex] place = ( t_{1}+t_{2} + time ) * v_{0}[/latex].

Если путники встречаются на первом промежутке пути, то их скорости суммируются (т.к. тела движутся на встречу друг к другу), при делении всего пути на сумму этих скоростей получим время встречи, расстояние можно найти умножив время встречи на скорость первого путника.

Если путники встречаются на втором промежутке пути, то их скорости аналогично суммируются, но в формуле нахождения времени встречи учитывается путь, пройденный путниками за первый промежуток времени, эту разность делим на сумму скоростей и получаем время встречи. Для того чтобы найти место встречи сложим время путников в пути и время встречи поделим на скорость и найдем место встречи.

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

Код на Java

 

8 thoughts on “Ю 2.31

  1. 0. Задача сформулирована автором не совсем чётко. Исходя из того, что она относится к разделу алгоритмов с ветвлением (а не линейным, как Вы ошибочно указали), можно предположить, что для второго путника описан весь путь из В в А. Это нужно указать в уточняющем комментарии.
    1. Как Вы получили формулу для точки встречи. Приведите вывод. Только сначала всё перепроверьте на бумаге. Вдруг Вы ошиблись?
    2. Как Вы строили тесты? Используя своё решение? Лучше это делать при помощи графика движения путников для простых исходных данных.
    3. Не очень удачно названа переменная svstr. У программистов считается дурным тоном называть что-либо транслитерацией. Т.е. стараются переводить, а не транслитерировать. Это в коде программы. А в математических формулах допустимо использовать кириллицу в индексах.

  2. Просто великолепный рисунок вышел! Вы гораздо основательнее разобрались с форматом SVG, чем я мог предположить.
    Один минус — анимация не совсем верно отражает происходящее. Второй человек садится в автомобиль и движется навстречу оси времени. Я про такое читал у Стругацких (кажется, «Понедельник начинается в субботу»). Но не вполне уверен, что именно это имел в виду А.Юркин в данной задаче 🙂
    Ожидалось, что автомобиль будет перемещаться по прямой идущей вправо вверх.
    Я позволил себе пока убрать анимацию, задать размер рисунка и поставить другие цвета, чтобы можно было разглядеть на тёмном фоне.

    Если решите доделать, то вставьте Ваш рисунок ниже моего. Если получится хорошо я удалю свой вариант.

Добавить комментарий