Количество сторон многоугольника, когда задано максимально возможное количество диагоналей
Учитывая число 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)/2Therefore:
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)