Рад помочь с этой задачей! Чтобы понять, сколько клеток находится под боем от слонов на шахматной доске, давайте разберемся с правилами их движения.
Слон может двигаться по диагоналям, и на квадратной доске каждый из слонов формирует под угрозу все клетки, которые находятся на тех же диагоналях, где и он. На шахматной доске, в углах которой расположены слоны, они находятся на следующих позициях:
- Слон 1: (1, 1)
- Слон 2: (1, m)
- Слон 3: (n, 1)
- Слон 4: (n, m)
Определим, какие клетки находятся под угрозой:
Слон 1 атака:
- Главная диагональ (снизу вверх слева направо): y = x
- Второстепенная диагональ (снизу вверх справа налево): y = m - x + 1
Слон 2 атака:
- Главная диагональ: y = x
- Второстепенная диагональ: y = x - m + 1
Слон 3 атака:
- Главная диагональ: y = n - x + 1
- Второстепенная диагональ: y = x
Слон 4 атака:
- Главная диагональ: y = n - x + 1
- Второстепенная диагональ: y = m - x + 1
Теперь, чтобы посчитать количество клеток под боем, используем размеры доски \( n \) и \( m \).
Обратите внимание, что при больших значениях \( n \) и \( m \) нам не нужно рисовать всю доску, а можно подсчитать количество клеток, которые могут быть атакованы:
- Каждому слону под властью может противостоять не более 2*(-1) из-за того, что диагонали пересекаются.
Теперь, в общем случае, количество клеток, находящихся под боем, можно исчислить как:
\[ Количество \ под \ боем = n + m - 1 \]
Это связано с тем, что каждая диагональ пересекает разные ряды и столбцы.
Вот решение задачи на Python:
def count_attacked_cells(n, m):
return n + m - 1
# Чтение входных данных
n = int(input())
m = int(input())
# Вычисление количества клеток под боем
result = count_attacked_cells(n, m)
# Вывод результата
print(result)
Таким образом, вы можете добавить это решение в свою программу. Обратите внимание, что функция работает быстро и укладывается в временные и пространственные ограничения, так как выполняет всего одну арифметическую операцию и не использует никаких массивов.
