Для решения задачи, нужно понять, как можно разместить максимальное количество королей на шахматной доске размером \( n \times n \), так чтобы они не угрожали друг другу. Короли угрожают всем соседним полям, включая diagonals, что означает, что король на позиции \( (i, j) \) контролирует позиции:
- \( (i-1, j-1) \)
- \( (i-1, j) \)
- \( (i-1, j+1) \)
- \( (i, j-1) \)
- \( (i, j+1) \)
- \( (i+1, j-1) \)
- \( (i+1, j) \)
- \( (i+1, j+1) \)
Таким образом, для размещения королей удобен шахматный подход с чередующимися клетками.
На доске \( n \times n \) можно разместить королей через одну клетку. Например, если мы заполним только чёрные или только белые клетки, то они не будут угрожать друг другу. Для квадратной доски размером \( n \):
- Если \( n \) четное, то максимальное количество королей будет равно \( \frac{n^2}{2} \).
- Если \( n \) нечетное, то количество будет равно \( \frac{n^2 + 1}{2} \) (чуть больше половины).
Примерный код на Python:
def max_kings(n):
if n % 2 == 0:
return (n * n) // 2
else:
return (n * n + 1) // 2
n = int(input().strip())
print(max_kings(n))
Для данного кода:
- Функция
max_kingsпринимает размер доски \( n \) и возвращает максимальное количество королей. - Мы делим площадь доски на 2 и учитываем дополнительный король, если размер доски нечётный.
Таким образом, наибольшее количество королей, которое можно разместить на шахматной доске \( n \times n \) – это \( \lceil n^2 / 2 \rceil \).
