
B. Кто быстрее? Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или
input.txt Вывод стандартный вывод или output.txt В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов. Научив команду ездить за шайбой, Вася понял, что ехать к ней должен тот хоккеист, который сможет ее быстрее догнать. Для грубой оценки времени он предположил, что хоккеист будет сначала поворачиваться с максимальной скоростью до тех пор, пока не будет смотреть точно на шайбу. После этого он поедет к ней с какой-то средней скоростью. На каждом ходу известно, что хоккеист повернут на А градусов, а для того, чтобы смотреть точно на шайбу, нужно быть повернутым на В градусов. Углы отсчитываются от положительного направления оси абсцисс против часовой стрелки. Расстояние от игрока до шайбы равно D. За один ход хоккеист может повернуться не более чем на Т градусов или переместиться на расстояние, не превосходящее S. За какое наименьшее количество ходов игрок сможет добраться до шайбы? Формат ввода Во входном файле заданы пять целых чисел D, A, B, S и T (0 ≤ D ≤ 109, 0 ≤ A, B < 360, 1 ≤ S ≤ 109, 1 ≤ T < 360). Формат вывода В выходной файл выведите, за какое наименьшее количество ходов хоккеист сможет добраться до шайбы. Пример 1 Ввод Вывод 0 172 172 1 320 0 Пример 2 Ввод 65 55 55 2 113 Вывод 33

Ответы на вопрос

Ответ:
Python 3.6
a = [int(i) for i in input().split()]
ab = abs(a[1] - a[2])
if ab > 180:
ab = 360 - ab
if ab % a[4] == 0:
x = ab // a[4]
else:
x = ab // a[4] + 1
if a[0] % a[3] == 0:
x += a[0] // a[3]
else:
x += a[0] // a[3] + 1
print(x)
PascalABC.NET 3.5.1
program who;
var a, b, ab, t: integer;
d, s, x: LongInt;
begin
read(d, a, b, s, t);
ab := abs(a - b);
if ab > 180 then
ab := 360 - ab;
if ab mod t = 0 then
x := ab div t
else
x := ab div t + 1;
if d mod s = 0 then
x := x + d div s
else
x := x + d div s + 1;
write(x);
end.
Объяснение:
Думаю по коду поймешь



Для решения этой задачи, мы можем использовать следующий подход:
- Вычислить угол между текущим направлением хоккеиста и направлением на шайбу.
- Посчитать количество ходов, необходимых для поворота хоккеиста на угол B (направление на шайбу) из текущего направления A. Для этого можно разделить угол между ними на максимальный угол поворота T и округлить вверх до ближайшего целого числа.
- Посчитать расстояние до шайбы, которое хоккеист проедет, пока поворачивается. Для этого нужно умножить количество ходов на расстояние, на которое хоккеист может переместиться за один ход S.
- Вычислить расстояние, которое останется до шайбы после поворота.
- Посчитать количество ходов, необходимых для перемещения хоккеиста на оставшееся расстояние до шайбы, разделив его на S и округлив вверх до ближайшего целого числа.
Вот Python-код, который решает данную задачу:
pythonimport math
def min_moves_to_reach_puck(D, A, B, S, T):
# Угол между текущим направлением и направлением на шайбу
angle_diff = abs((A - B) % 360)
# Количество ходов для поворота хоккеиста на угол B
turns_needed = math.ceil(angle_diff / T)
# Расстояние, которое хоккеист проедет, пока поворачивается
distance_while_turning = turns_needed * S
# Оставшееся расстояние до шайбы после поворота
remaining_distance = D - distance_while_turning
# Количество ходов для перемещения хоккеиста на оставшееся расстояние
moves_needed = math.ceil(remaining_distance / S)
return turns_needed + moves_needed
# Чтение входных данных из файла
with open("input.txt", "r") as f:
D, A, B, S, T = map(int, f.readline().split())
# Вычисление ответа
result = min_moves_to_reach_puck(D, A, B, S, T)
# Запись результата в выходной файл
with open("output.txt", "w") as f:
f.write(str(result))
Примеры из условия:
Пример 1:
makefileВвод:
0 172 172 1 320
Вывод:
0
Пример 2:
makefileВвод:
65 55 55 2 113
Вывод:
33
Обратите внимание, что для данного решения мы используем углы в градусах, но выполняем правильную обработку их перехода через 360 градусов с помощью операции % 360
. Это позволяет нам правильно вычислять угловые разности.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili