Для решения задачи о количестве клеток, находящихся «под боем» от четырёх слонов, расположенных в углах шахматной доски, важно понимать, как слоны могут угрожать клеткам на доске.
Слоны могут двигаться по диагоналям, и в каждом углу (0,0), (0,m-1), (n-1,0) и (n-1,m-1) слоны будут угрожать клеткам вдоль своих диагоналей.
Чтобы определить, сколько клеток находится «под боем», давайте рассмотрим следующее:
Слон в верхнем левом углу (0, 0) угрожает всем клеткам по двум диагоналям:
- Первая диагональ: \(\text{y = x}\)
- Вторая диагональ: \(\text{y = -x}\) (с учетом границ доски)
Аналогично, слоны в других углах угрожают клеткам своего участка доски.
Обратите внимание, что клетки в углах и на диагоналях могут пересекаться, поэтому мы не можем просто суммировать клетку, находящуюся под боем от каждого слона. Вместо этого важно применяется комбинирование угрожаемых клеток.
Алгоритм вычисления:
- Рассчитываем количество клеток, находящихся под боем, отдельно для каждого угла, но учитываем их пересечения.
Код на C++
#include <iostream>
using namespace std;
int main() {
long long n, m;
cin >> n >> m;
// Общее количество клеток на доске
long long total_cells = n * m;
// Клетки, находящиеся под боем:
// Учет угрожаемых клеток от каждого слона
long long under_attack = (n - 1) + (m - 1) + (n - 1) + (m - 1);
// Вырезаем увеличенное количество (4 клетки углов)
under_attack -= 4;
// Если меньше 0, значит все клетки под боем
if(under_attack < 0) {
under_attack = 0;
}
cout << under_attack << endl;
return 0;
}
Объяснение кода:
- Мы считываем размеры доски
nиm. - Затем вычисляем количество клеток, находящихся под боем, учитывая, что каждый слон угрожает строкам и столбцам вокруг него.
- Поскольку каждая клетка на краю доски уже отмечена, мы вычитаем 4 (клетки углов).
- Проверяем, чтобы значение не стало отрицательным.
- Ввели результат в консоль.
Пример запуска программы:
- Ввод:
24 - Вывод:
4
Таким образом, программа эффективно вычисляет количество клеток, находящихся под боем от слонов в углах шахматной доски. Если есть вопросы или нужна дополнительная информация, не стесняйтесь задавать!