Найдите N-й корень числа, используя метод деления пополам

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

Даны два положительных целых числа N и P . Задача состоит в том, чтобы найти N -й корень P .

Примеры:

Input: P = 1234321, N = 2
Output: 1111
Explanation: square root of 1234321 is 1111.

Input: P = 123456785, N = 20
Output: 2.53849

Подход: Существуют различные способы решения данной проблемы. Здесь приведенный ниже алгоритм основан на математической концепции, называемой методом деления пополам для поиска корней. Чтобы найти корень N -й степени заданного числа P, мы составим уравнение, сформированное в x как ( x p - P = 0 ), и цель состоит в том, чтобы найти положительный корень этого уравнения, используя метод деления пополам.

Как работает метод деления пополам?
Возьмем интервал (a, b) такой, что уже известно, что корень существует в этом интервале. После этого найдите середину интервала и осмотрите значение функции и ее производная при x = mid.

  • Если значение функции равно 0, это означает, что корень найден
  • Если значение функции положительно, а ее производная отрицательна, значит, корень лежит в правой половине.
  • Если значение функции положительно и ее производная положительна, то корень лежит в левой половине.

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

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