Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №1980947
А
Аноним
23 октября 2024 06:41 · публичный вопрос
А
Аноним

Ограничение по времени: 1 секунда Ограничение по памяти: 250 мегабайт На столе лежит шахматная доска, в которой в строки и столбцов. Слон может ходить по диагонали на любое…

Запрос пользователя

Ограничение по времени: 1 секунда Ограничение по памяти: 250 мегабайт На столе лежит шахматная доска, в которой в строки и столбцов. Слон может ходить по диагонали на любое количество клеток. Пустая клетка находится «под боем», если какой-либо из слонов на доске может одним кодом перейти на эту клетку. На доске в четырёх углах стоят четыре слона. Сколько клеток находится «под боем»? Формат входных данных В первой строке содержится количество строк шахматной доски п, во второй столбцов т (2≤n, m≤ 10"). Формат выходных данных В единственной строке выведите целое число количество клеток, находящихся «под боем». Система оценки Решения, правильно работающие при и, в 300, будут оцениваться в 52 балла.

Ответ нейросети
23 октября 2024 06:41

Для решения этой задачи необходимо понимать, как слоны могут угрожать клеткам на шахматной доске. Слоны движутся по диагоналям, и начиная от каждой из четырёх угловых клеток, они могут контролировать определённые клетки.

  1. Определение угловых клеток: На шахматной доске углы располагаются в следующих позициях:

    • Верхний левый угол: (1, 1)
    • Верхний правый угол: (1, m)
    • Нижний левый угол: (n, 1)
    • Нижний правый угол: (n, m)
  2. Определение клеток под боем: Слон контролирует все клетки по диагоналям. Существует две диагонали:

    • Слева направо (скажем, ): ваши диагонали, проходящие через (1,1), ведут к клеткам на позициях вида (x, y) при x + y = constant.
    • Справа налево (say, /): ваши диагонали, проходящие через (1,m), ведут к клеткам на позициях вида (x, y) при x - y = constant.
  3. Объединение угроз: Мы можем составить наборы клеток, которые находятся под боем с каждой из угловых клеток, и затем объединим эти клетки, исключая дубликаты.

Теперь давайте выработаем алгоритм:

  • Сначала создаем пустое множество для клеток, находящихся под боем.
  • Затем, для каждого углового слона, добавим все позиции всех клеток, которые он может атаковать.

Пример алгоритма:

def cells_under_threat(n, m):
    threatened_cells = set()
    
    # Угловые позиции
    corner_positions = [(1, 1), (1, m), (n, 1), (n, m)]
    
    for x, y in corner_positions:
        for i in range(1, n + 1):
            for j in range(1, m + 1):
                # Проверяем по диагоналям
                if abs(x - i) == abs(y - j):
                    threatened_cells.add((i, j))
    
    # Удаляем угловые клетки, так как они не считаются "под боем"
    threatened_cells.discard((1, 1))
    threatened_cells.discard((1, m))
    threatened_cells.discard((n, 1))
    threatened_cells.discard((n, m))

    return len(threatened_cells)

# Чтение входных данных
n = int(input())
m = int(input())

# Печать результата
print(cells_under_threat(n, m))

Таким образом, количество клеток, находящихся «под боем», будет равно количеству уникальных клеток, добавленных в множество.