Чтобы решить эту задачу, необходимо понять, как расставить королей на шахматной доске так, чтобы они не угрожали друг другу. Король может угрожать всем восьми клеткам вокруг себя, значит, нам нужно оставлять пустые клетки вокруг каждого расставленного короля.
Наиболее эффективный способ расставить королей - это использовать шахматную доску в виде чередующихся клеток. Рассмотрим два случая в зависимости от четности размера доски \( n \):
Если \( n \) - четное число:
- Например, для доски \( 2 \times 2 \) можно расставить королей в каждом углу:
K . . K - Каждые два ряда могут вмещать 2 короля, следовательно: \[ \text{Общее количество королей} = \frac{n \times n}{2} \]
- Например, для доски \( 2 \times 2 \) можно расставить королей в каждом углу:
Если \( n \) - нечетное число:
- В этом случае можно расставить королей более оптимально, но так, чтобы по-прежнему оставалось минимум клеток для добавления нового короля:
K . K . K . K . K - В этом случае также можно использовать формулу: \[ \text{Общее количество королей} = \frac{(n + 1) \times (n + 1)}{2} \]
- В этом случае можно расставить королей более оптимально, но так, чтобы по-прежнему оставалось минимум клеток для добавления нового короля:
Таким образом, мы можем обобщить результат для любого \( n \):
Если \( n \) четное: \[ \text{Королей} = \frac{n^2}{2} \]
Если \( n \) нечетное: \[ \text{Королей} = \frac{(n^2 + 1)}{2} \]
Используя эти формулы, вы сможете получить максимальное количество королей для заданного размера доски \( n \). Не забудьте использовать 64-битный тип данных для больших значений \( n \).
Теперь вы можете реализовать этот алгоритм в вашем коде!
