Количество сторон многоугольника, когда задано максимально возможное количество диагоналей

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

Учитывая число K , которое является максимально возможным количеством диагоналей в любом многоугольнике, задача состоит в том, чтобы найти количество сторон этого многоугольника.

Примеры:

Input: 2
Output: 4
Explanation: A quadrilateral has 2 diagonals at max.

Input: 6
Output: -1
Explanation: No polygon has at most 6 diagonals.

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

Интуиция:

for an n-sided convex polygon, from each vertex, we can draw (n – 3) diagonals. 
Following this way for n-vertices, there will be n*(n – 3) diagonals but each diagonal is calculated twice. 
So the total number of diagonals become n*(n – 3)/2

Therefore:
n*(n – 3) / 2 = K
n*(n – 3) – 2 *K = 0
n2 – 3*n -2*K = 0
When this is compared with the general representation of quadratic equation (ax2 + bx + c)
a = 1, b = -3, c = -2 *K
for this equation.

Solve the equation to get the value of n which is:
n = (-b ± √(b2 – 4ac) )/ 2a

Следуйте шагам, указанным ниже, чтобы реализовать идею:

  • Используйте формулу, полученную выше, чтобы найти значение n :
  • Дискриминант d = b 2 – 4ac
    • Если d > 0: корни будут различными, и ответом будет один из положительных корней.
    • Если d == 0: корни будут равны, и это будет ответ
    • Если d < 0: корни будут мнимыми и ответ не существует.

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

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