Чтобы решить задачу о количестве клеток, находящихся «под боем» слонов на шахматной доске, нам нужно учесть, как слоны могут атаковать клетки, находящиеся в их досягаемости.
Слоны, расположенные в четырех углах доски, находятся в следующих позициях:
- (1, 1) — левый верхний угол
- (1, m) — правый верхний угол
- (n, 1) — левый нижний угол
- (n, m) — правый нижний угол
Мы будем считать, что клетки под боем это те, которые могут быть атакованы хотя бы одним из слонов.
Анализ досягаемости слонов:
Слон в (1, 1): атакует клетки:
- Все клетки по диагонали вниз вправо (например, (2, 2), (3, 3), …)
- Все клетки по диагонали вверх влево (но не может атаковать, так как находится в углу)
Слон в (1, m): атакует клетки:
- Все клетки по диагонали вниз влево (например, (2, m-1), (3, m-2), …)
- Все клетки по диагонали вверх вправо (но не может атаковать, так как находится в углу)
Слон в (n, 1): атакует клетки:
- Все клетки по диагонали вверх вправо (например, (n-1, 2), (n-2, 3), …)
- Все клетки по диагонали вниз влево (но не может атаковать, так как находится в углу)
Слон в (n, m): атакует клетки:
- Все клетки по диагонали вверх влево (например, (n-1, m-1), (n-2, m-2), …)
- Все клетки по диагонали вниз вправо (но не может атаковать, так как находится в углу)
Подсчет клеток «под боем»:
- У нас есть две диагонали по обеим осям:
- Каждая диагональ будет затрагивать клетки, находящиеся в пределах доски.
Обозначим:
- Количество клеток в первой диагонали (от (1, 1) до (n, m)) равно
min(n, m). - Аналогично, для диагонали от (n, 1) до (1, m), тоже будет
min(n, m).
Так что нам нужно обратить внимание на то, чтобы не учитывать клетки, находящиеся в углах дважды и пересечения, поэтому:
Формула для количества клеток под боем: \[ \text{Всё клетки} = n \times m \]
Из них приемлемые клетки: \[ 4 \text{ (углы)} + 2(n-2) + 2(m-2) \]
Теперь вычислим клетки под боем:
- Если n=2 и m=4: все клетки под боем — 4.
- Если n=2 и m=2: не остается клеток, кроме углов, под боем — 0.
- Если n=4 и m=7: получим 10.
Давайте приведем кода для подсчета клеток под боем:
n = int(input())
m = int(input())
# общее количество клеток на доске
total_cells = n * m
# количество клеток под боем слонов
attacked_cells = (n - 1) + (m - 1) - 4
# если n или m = 2, кто-то отнимется или прибавится клетки
if n == 2 or m == 2:
attacked_cells = 0
# результат
print(attacked_cells)
Прежде чем прибегнуть к коду, проверим условия. Обратите внимание, что угловые клетки исключаются из итогового количества.