Ограничение по времени: 1
секунда
Ограничение по памяти: 256
мегабайт
сколько клеток будет атаковать слон, если поставить его на клетку с номером строки R
и номером столбца C
на шахматной доске размером N×N
?
Первая строка содержит целое число N
(3≤N≤109
) —
размер шахматной доски.
Вторая строка содержит целое число R
(1≤R≤N
) —
номер строки, в которой расположен слон.
Третья строка содержит целое число C
(1≤C≤N
) —
номер столбца, в котором расположен слон.
Строки и столбцы нумеруются с единицы, начиная с левого нижнего угла.
0 0 1 0 0
0 1 0 1 0
1 0 S 0 1
0 1 0 1 0
0 0 1 0 0
В данном случае слон атакует все клетки на диагоналях суммы и разности 3 и 3, а именно клетки (1, 5), (2, 4), (4, 2), (5, 1).
Пример 2:
Доска размером 6x6. Слон находится на клетке (4, 2).
0 0 0 0 0 0
0 1 0 0 0 0
0 S 1 0 0 0
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
В этом случае слон атакует все клетки на диагоналях суммы и разности 4 и 2, а именно клетки (1, 6), (2, 5), (3, 4), (5, 2), (6, 1).
Исходя из этих примеров, можно сделать следующее наблюдение:
1. Если слон находится на диагонали, проходящей через клетку с номером строки R и номером столбца C, то он атакует N-1 клетку на этой диагонали.
2. Если слон не находится на диагонали, то количество атакуемых клеток будет равно min(N−R,N−C)+min(R−1,C−1).
На основе этого наблюдения можно написать решение задачи:
1. Считываем из входных данных размер доски N, номер строки R и номер столбца C.
2. Проверяем, находится ли слон на диагонали или нет.
- Если слон находится на диагонали, то количество атакуемых клеток будет равно N-1.
- Если слон не находится на диагонали, то количество атакуемых клеток будет равно min(N−R,N−C)+min(R−1,C−1).
3. Выводим количество атакуемых клеток.
Пример реализации этого алгоритма на языке Python:
python
N = int(input()) # считываем размер доски
R = int(input()) # считываем номер строки
C = int(input()) # считываем номер столбца
# проверяем, находится ли слон на диагонали
if R == C or R + C == N + 1:
attack_count = N - 1
else:
attack_count = min(N - R, N - C) + min(R - 1, C - 1)
print(attack_count)
Таким образом, данное решение позволяет определить количество клеток, которые будет атаковать слон, если его поставить на заданную клетку доски. Решение работает за время O(1), так как выполняет только несколько простых операций над входными данными.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет