Минимизируйте абсолютное значение N в K ходах, добавляя или вычитая D

Опубликовано: 20 Сентября, 2022

Даны три числа N , D и K , задача состоит в том, чтобы найти минимальное абсолютное значение N после применения K операций. За одну операцию N можно изменить на N+D или ND .

Пример:

Input: N = 6, K = 2, D = 4
Output: 2
Explanation:
Move 1: 6 to ( 6  – 4 ) = 2
Move 2: 2 to ( 2 – 4 ) = -2
After K moves absolute value of N is 2.

Input: N = 7, K = 4, D = 3
Output: 1
Explanation:
Move 1: 7 to ( 7  – 3 ) = 4
Move 2: 4 to ( 4 + 3 ) = 7
Move 3: 7 to ( 7 – 3 ) = 4
Move 4: 4 to ( 4 – 3 ) = 1
After K moves absolute value of coordinate is 1.

Подход: чтобы получить минимальное значение, попытайтесь переместить N как можно ближе к 0. В N вычислить N/D , что дает, сколько ходов необходимо, чтобы приблизиться к 0. Если K меньше, чем N/D , используйте все ходы, чтобы приблизиться к 0, т.е. используйте все ходы, чтобы изменить N на ND . В противном случае, если (K > N/D) , все K движений не могут быть использованы в одном направлении, потому что оно превышает 0, и тогда значение N будет увеличиваться. Итак, сначала используйте N/D ходы, тогда мы близки к 0. Теперь K равно K = K – N/D после использования N/D . Теперь используйте эту технику вперед и назад, чтобы найти ответ. Выполните следующие шаги, чтобы решить эту проблему:

  1. Во-первых, возьмите абс N, потому что от 0 до -N и N имеют одинаковое расстояние.
  2. Инициализировать переменную и вычислить totalMoves = N/D .
  3. Если K меньше, чем totalMoves , вычтите D*K из N .
  4. Иначе Если K больше, чем totalMoves , вычтите D*K из N и totalMoves из K.
  5. Теперь проверьте, является ли K нечетным, чтобы вычесть D из N .
  6. В противном случае распечатайте как есть.


Временная сложность: O(1)
Вспомогательное пространство: O(1)