Ограничение по времени: 0.5
секунды
Ограничение по памяти: 256
мегабайт
Родители Лизы подключили пакет, содержащий N телевизионных каналов, пронумерованных числами от 1 до N.
Переключать каналы можно с помощью двух кнопок на пульте: «+» и «–».
Короткое нажатие на кнопку «+» приведёт к переключению на следующий канал, если номер текущего канала меньше N; если же номер текущего канала равен N, то телевизор продолжит показывать этот канал. Если кнопку «+» нажать и удерживать некоторое время, произойдёт переход на K каналов вперёд при условии, что номер текущего канала не превосходит N−K. В противном случае произойдёт переход на канал N.
Аналогично, короткое нажатие на кнопку «−» приведёт к переключению на предыдущий канал, если номер текущего канала больше 1; если же номер текущего канала равен 1, телевизор продолжит показывать этот канал. Если кнопку «−» нажать и удерживать некоторое время, то произойдёт переход на K каналов назад при условии, что номер текущего канала превышает K. В противном случае произойдёт переход на канал 1. Лиза включила телевизор и обнаружила, что он показывает канал P. Лиза знает, что очень скоро по каналу с номером U начнётся интересная передача. Определите, какое минимальное количество нажатий на кнопки пульта потребуется сделать Лизе, чтобы переключиться на канал U .
Формат входных данных
В первой строке содержится целое число N
(3≤N≤109) — количество телевизионных каналов.
Во второй строке содержится целое число K
(2≤K
В третьей строке содержится целое число P
(1≤P≤N) — номер канала, который показывает телевизор.
В четвёртой строке содержится целое число U
(1≤U≤N)—номер канала, на который желает переключиться Лиза.
Гарантируется, что P≠U.
Формат выходных данных
Выведите одно целое неотрицательное число —
минимальное количество нажатий на кнопки пульта, которое необходимо для переключения с канала P на канал U .
Система оценки
Решения, правильно работающие при P
Решения, правильно работающие при N≤100, будут оцениваться в 48 баллов.
Замечание
В первом примере Лизе следует сначала выполнить одно короткое нажатие на кнопку «+» и переключиться с канала 3 на канал 4, а затем трижды осуществить переход вперёд на 5 каналов: сначала переключиться с 4 на 9, затем с 9 на 14 и, наконец, с 14на 19 канал.
Во втором примере Лиза может сначала переключиться коротким нажатием на кнопку «−» на канал 2, после чего выполнить три перехода вперёд на 5 каналов: с канала 2 на канал 7, затем на канал 12 и, наконец, на канал 17.
В третьем примере Лиза дважды выполнит короткое нажатие кнопки «−».
В четвёртом примере Лизе нужно сначала перейти назад, на канал 1, после чего трижды выполнить переход вперёд, последовательно на каналы 6, 11, 16.
ОТВЕТ ДАТЬ КОДОМ НА PYTHON!!!!!!!!!!!!!!!!!!!!!
asilvejstruk:
Родители Лизы издеватели вообще
Ответы
Ответ дал:
0
Ответ:
def paths(n, k, p, u):
d = abs(p - u)
t = divmod(d, k)
j = (p - 2) % k + 1 if p > u < t[1] else (n - p) % k if p < u > n - k + t[1] else k
return (sum(t), 1 + j + int.__sub__(*t)) + tuple(
map(((p + k - 2) // k).__add__, paths(n, k, 1, u)) if u > p and 1 < p < k * k // 2
else map(((n - p + k - 1) // k).__add__, paths(n, k, n, u)) if u < p and n > p > n - k * k // 2
else ()
)
n, k, p, u = map(int, map(input, ('',) * 4))
print(min(paths(n, k, p, u)))
Объяснение:
Вас заинтересует
1 год назад
1 год назад
1 год назад
3 года назад
3 года назад
8 лет назад
8 лет назад