Минимальный размер массива, возможный с заданными значениями суммы и произведения

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

Для заданных двух положительных целых чисел S и P задача состоит в том, чтобы найти минимально возможный размер массива, при котором сумма элементов равна S , а произведение элементов равно P. Если такого массива не существует, то выведите «-1» .

Примеры:

Input: S = 5, P = 6
Output: 2
Explanation: The valid array can be {2, 3}, which is of minimum size.

Input: S = 5, P = 100
Output: -1

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

  • Используя N чисел, можно составить массив из размер N имеющий сумму S .
  • Любые значения продукта могут быть достигнуты, когда значение P находится между [0, (S/N) N ] .

Выполните следующие шаги, чтобы решить данную проблему:

  • Сначала проверьте, совпадают ли значения S и P , затем верните 1, так как само значение S используется для создания массива минимального размера.
  • Выполните итерацию по диапазону [2, S], используя переменную i , и если значение (S/i) >= pow(P, 1/i), то выведите значение i как результирующий минимальный размер сформированного массива.
  • После выполнения вышеуказанных шагов, если нет ни одного возможного значения i , удовлетворяющего вышеуказанным критериям, выведите «-1» .

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


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