Вопрос задан 19.10.2024 в 22:14. Предмет Информатика. Спрашивает Тахциди Ксения.

Ограничение времени 1 секунда Ограничение памяти 64.0 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt

Лягушка прыгает по числовой прямой. Изначально она находится в точке 0. За раз она может прыгнуть либо на 1 единицу вперед или назад, либо на k единиц вперед или назад. За какое минимальное число прыжков она попадет в точку n?

Формат ввода
Дано два числа
k(1≤k≤10^9) и n(1≤n≤10^9 )
Формат вывода
Выведите 1 число -- ответ на задачу

Перейти к ответам

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

Отвечает Кравченко София.

Задача сводится к нахождению минимального количества прыжков, которые лягушка должна совершить, чтобы попасть из точки 0 в точку n. Лягушка может совершать два вида прыжков:

  1. Прыжок на 1 единицу вперед или назад.
  2. Прыжок на k единиц вперед или назад.

Алгоритм решения

  1. Если n меньше или равно k:

    • Если n=kn = k, лягушке достаточно совершить один прыжок на k единиц, чтобы достичь цели. Ответ — 1.
    • Если n<kn < k, то лягушке придется воспользоваться прыжками на 1 единицу, потому что прыжок на k будет слишком большим. В этом случае потребуется nn прыжков, чтобы дойти до цели. Ответ — nn.
  2. Если n больше k:

    • Когда n>kn > k, лягушка может комбинировать прыжки на k единиц и прыжки на 1 единицу.
    • Чтобы найти минимальное количество прыжков, можно разделить n на k:
      • Количество полных прыжков на k будет целая часть отnk\text{целая часть от} \, \frac{n}{k}.
      • После этого остается остаток от деления n%kn \, \% \, k, который лягушка должна пройти прыжками на 1.
    • Если остаток равен 0, то дополнительных прыжков на 1 не потребуется, и ответ будет равен количеству полных прыжков на k.
    • Если остаток не равен 0, то потребуется еще один прыжок на 1 единицу.

Вывод

Алгоритм можно описать так:

  1. Если nkn \leq k, то ответ — min(n,1)\min(n, 1).
  2. Если n>kn > k, то ответ — это количество прыжков на k плюс один, если есть остаток.

Пример

  1. k=5,n=12k = 5, n = 12
    • Лягушка может сделать два прыжка по 5 единиц (10 единиц) и затем два прыжка на 1 единицу. Итого 4 прыжка.
    • Ответ: 3.

Реализация

python
k, n = map(int, input().split())

if n <= k: print(1 if n == k else n) else: jumps = n // k if n % k == 0: print(jumps) else: print(jumps + 1)

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос