Минимальные деления, чтобы уменьшить N до 1, следуя заданным условиям

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

Учитывая целое число N , задача состоит в том, чтобы найти минимальное количество делений, необходимых для уменьшения числа до 1, когда деления соответствуют заданным критериям:

  • Выберите два целых числа X и Y так, чтобы X+Y было четным.
  • Замените N на N/X Y, где X Y является делителем N

Примечание. Если уменьшить N до 1 невозможно, то вернуть -1.

Примеры:

Input: N = 35
Output: 1
Explanation: Select X = 35 and Y = 1. X+Y = 36 which is even,  
and XY = 35 is a divisor of N = 35 so this is a valid choice.

Input: 44
Output: 2

Подход: Задача может быть решена на основе следующего математического наблюдения:

  • If N is odd then X can be chosen as X = N and Y = 1. So XY = X = N and also X + Y = X + 1 = even.
  • If N is even then N can be written as N = 2p * X where p is any integer and X is an odd number (can be 1). 
    • If p is odd then it is never possible to reduce the number to 1 as 2 + p will always be odd.
    • Otherwise, it will take 2 moves to reduce the number to 1: One step to reduce the number to X and another step to reduce it from X to 1.
    • If X = 1 then no 2nd step is needed and 1 step will be sufficient.

Выполните шаги, указанные ниже, чтобы решить проблему:

  • Найдите, является ли число нечетным или четным n.
  • Если число четное, то:
    • Если 2 возвести в нечетную степень, то ответ невозможен.
    • В противном случае получите минимальное количество шагов, как показано в приведенном выше наблюдении.
  • Если число нечетное, требуется только один шаг.

Ниже приведена реализация описанного выше подхода.

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