Чтобы максимизировать количество королей на шахматной доске размером n x n, нужно учесть, что короли не могут стоять рядом, ни по горизонтали, ни по вертикали, ни по диагонали.
Одним из эффективных способов размещения королей на доске является чередование клеток, подобно шахматной раскладке. Если доска имеет чётное количество клеток, распределение будет наиболее сбалансированным; если нечётное — мы будем размещать королей так, чтобы заполнить максимальное количество клеток без возможности поставить ещё одного короля.
Ну вот как это сделать:
Для чётного n можно разместить королей на всех клетках одного цвета (чёрные или белые), что составляет ровно половину клеток доски:
- Количество королей = (n * n) / 2.
Для нечётного n количество королей будет тоже расположено на клетках одного цвета, но в этом случае мы возьмем на 1 короля больше:
- Количество королей = (n * n + 1) / 2.
Выражая это формально, можно использовать формулу:
- \( \text{max\_kings}(n) = \left\lceil \frac{n^2}{2} \right\rceil \)
В Python это можно записать как:
import math
def max_kings(n):
return math.ceil(n * n / 2)
n = int(input())
print(max_kings(n))
Теперь, если мы применим это к вашему пределу \(1 < n < 10^9\), наш алгоритм все равно работает за O(1) времени, так как мы просто вычисляем значение на основе n. Данная формула обеспечит правильный ответ для любого допустимого значения n.
