ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102931
УсловиеНовый градоначальник города Глупова решил с целью пополнения бюджета и экономии горючего провести кампанию борьбы с левым уклоном и левыми рейсами. Для этого он запретил водителям выполнять левые повороты, установив штраф за каждый такой поворот в размере одного миллиона (разворот на 180o поворотом налево не считается). От тяжелого прошлого Глупову достались улицы, которые могут пересекаться под любыми углами. Градоначальник приказал установить компьютерную систему тотальной слежки, которая следит за каждым автомобилем, записывая его координаты каждый раз, когда тот меняет направление движения (включая начальную и конечную точки пути).Требуется написать программу, вычисляющую по записанной
последовательности координат автомобиля штраф, который должен быть
взыскан с водителя.
РешениеСкачать архив тестов и решенийВ этой задаче, фактически, необходимо определить, в каком направлении происходит кратчайший поворот от одного вектора (x1, y1) до другого вектора (x2, y2) – по часовой стрелке или против. Представим на время, что рассматриваемые вектора находятся не в плоскости, а в пространстве, и рассмотрим их векторное произведение. Оно будет иметь компоненты (0, 0, z), где z = x1y2 - x2y1. Тогда из определения векторного произведения получаем следующий полезный факт: рассматриваемый поворот осуществляется против часовой стрелки тогда и только тогда, когда x1y2 - x2y1 > 0. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |