Минимальный размер набора, имеющего либо элемент в диапазоне [0, X], либо нечетную степень 2 с суммой N

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

Даны два положительных целых числа N и X , задача состоит в том, чтобы найти размер наименьшего набора целых чисел, такого, что сумма всех элементов набора равна N и каждый элемент набора находится либо в диапазоне [0, X] , либо нечетная степень числа 2. Если такого размера множества найти не удается, то выведите «-1» .

Примеры:

Input: N = 11, X = 2
Output: 3
Explanation: The set {1, 2, 8} is the set of minimum number of elements such that the sum of elements is 11 and each element is either in range [0, 2] (i.e, 1 and 2) or is an odd power of 2 (i.e., 8 = 23).

Input: N = 3, X = 0
Output: -1
Explanation : No valid set exist.

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

  • Поддерживайте размер переменной, в которой хранится минимально возможный размер допустимого набора, и инициализируйте его значением 0 .
  • Повторяйте до тех пор, пока значение N не станет больше, чем X , и выполните следующие шаги:
    • Вычтите наибольшую нечетную степень i числа 2 , которая меньше или равна N , из N .
    • Увеличьте значение size на 1 .
  • Если значение N положительное, то увеличьте значение размера на 1 .
  • После выполнения вышеуказанных шагов выведите значение size в качестве требуемого результата.

Ниже приведена реализация вышеуказанного подхода:

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