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

Наши слоны, ограничение по времени:1 секунда, ограничение по памяти 256 мегабайт. На столе лежит шахматная доска , в которой n строк и m столбцов. Слон может ходить по диагонали на любое количество клеток. Пустая клетка находится под боем , если какой-либо из слонов на доске может одним ходом перейти на эту клетку. На доске в четырех углах стоят четыре слона. Сколько клеток находится «под боем» Формат входных данных: в первой строке содержится количество строк шахматной доски n во второй столбцов m(2

Нейросеть23 октября 2024 17:14

Для решения задачи нам нужно определить, сколько клеток на шахматной доске под боем слонов, стоящих в четырех углах. Слоны могут ходить по диагонали, и у нас есть четыре слона, стоящие в клетках (1,1), (1,m), (n,1), и (n,m).

Каждый слон может атаковать клетки по двум диагоналям:

  1. Диагональ, идущая слева сверху направо вниз (с увеличением и строки по мере увеличения столбца).
  2. Диагональ, идущая справа сверху налево вниз (с увеличением строки и уменьшением столбца).

Теперь давайте вычислим, сколько клеток зависит от позиции каждого слона:

  1. Слон в (1,1):

    • Сначала диагональ вниз направо:

      • Клетки на этой диагонали: (1,1), (2,2), (3,3), ..., (min(n,m), min(n,m)).
      • Всего: min(n,m).
    • Затем диагональ вниз налево:

      • На этой диагонали есть только клетка (1,1).
      • Всего: 0 новых клеток.
  2. Слон в (1,m):

    • Диагональ вниз налево:

      • Клетки: (1,m), (2,m-1), (3,m-2), ..., (min(n,m), max(1,m-n+1)).
      • Всего: min(n,m).
    • Диагональ вниз направо:

      • На этой диагонали есть только клетка (1,m).
      • Всего: 0 новых клеток.
  3. Слон в (n,1):

    • Диагональ вниз направо:

      • Клетки: (n,1), (n-1,2), (n-2,3), ..., (max(1,n-m+1), m).
      • Всего: min(n,m).
    • Диагональ вниз налево:

      • На этой диагонали есть только клетка (n,1).
      • Всего: 0 новых клеток.
  4. Слон в (n,m):

    • Диагональ вниз налево:

      • Клетки: (n,m), (n-1,m-1), (n-2,m-2), ..., (max(1,n-m+1), 1).
      • Всего: min(n,m).
    • Диагональ вниз направо:

      • На этой диагонали есть только клетка (n,m).
      • Всего: 0 новых клеток.

Теперь мы можем подсчитать количество клеток под боем:

  1. Слон (1,1): min(n,m) (клетки по первой диагонали)
  2. Слон (1,m): min(n,m) (клетки по второй диагонали)
  3. Слон (n,1): min(n,m) (клетки по третьей диагонали)
  4. Слон (n,m): min(n,m) (клетки по четвертой диагонали)

Итого:

def count_under_attack(n, m):
    attack_cells = (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1)
    return attack_cells

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

# Вывод результата
print(count_under_attack(n, m))

Однако, на шахматной доске, как мы уже научились понимать, клетки, атакуемые слонами, не должны дублироваться. Поэтому мы просто берем количество уникальных клеток. Всего под боем окажется:

(2 * (n + m - 2))

Так как в каждом из направлений (вниз налево и вниз направо) каждая клетка атакуется только одним слоном.

Исходя из этого мы можем просто вывести результат.

Конечный вывод:

total_under_attack = (n - 1) + (m - 1)  
print(total_under_attack)

Таким образом, применяя данную логику, мы можем правильно решить задачу за О(1) времени.

Наши слоны, ограничение по времени:1 секунда, ограничение по памяти 256 мегабайт. На столе лежит шахматная доска , в которой n строк и m столбцов. Слон может ходить по диагонали на любое количество клеток. Пустая клетка находится под боем , если какой-либо из слонов на доске может одним ходом перейти на эту клетку. На доске в четырех углах стоят четыре слона. Сколько клеток находится «под боем» Формат входных данных: в первой строке содержится количество строк шахматной доски n во второй столбцов m(2
Для решения задачи нам нужно определить, сколько клеток на шахматной доске под боем слонов, стоящих в четырех углах. Слоны могут ходить по диагонали, и у нас есть четыре слона, стоящие в клетках (1,1), (1,m), (n,1), и (n,m). Каждый слон может атаковать клетки по двум диагоналям: 1. Диагональ, идущая слева сверху направо вниз (с увеличением и строки по мере увеличения столбца). 2. Диагональ, идущая справа сверху налево вниз (с увеличением строки и уменьшением столбца). Теперь давайте вычислим, сколько клеток зависит от позиции каждого слона: 1. Слон в (1,1): - Сначала диагональ вниз направо: - Клетки на этой диагонали: (1,1), (2,2), (3,3), ..., (min(n,m), min(n,m)). - Всего: min(n,m). - Затем диагональ вниз налево: - На этой диагонали есть только клетка (1,1). - Всего: 0 новых клеток. 2. Слон в (1,m): - Диагональ вниз налево: - Клетки: (1,m), (2,m-1), (3,m-2), ..., (min(n,m), max(1,m-n+1)). - Всего: min(n,m). - Диагональ вниз направо: - На этой диагонали есть только клетка (1,m). - Всего: 0 новых клеток. 3. Слон в (n,1): - Диагональ вниз направо: - Клетки: (n,1), (n-1,2), (n-2,3), ..., (max(1,n-m+1), m). - Всего: min(n,m). - Диагональ вниз налево: - На этой диагонали есть только клетка (n,1). - Всего: 0 новых клеток. 4. Слон в (n,m): - Диагональ вниз налево: - Клетки: (n,m), (n-1,m-1), (n-2,m-2), ..., (max(1,n-m+1), 1). - Всего: min(n,m). - Диагональ вниз направо: - На этой диагонали есть только клетка (n,m). - Всего: 0 новых клеток. Теперь мы можем подсчитать количество клеток под боем: 1. Слон (1,1): min(n,m) (клетки по первой диагонали) 2. Слон (1,m): min(n,m) (клетки по второй диагонали) 3. Слон (n,1): min(n,m) (клетки по третьей диагонали) 4. Слон (n,m): min(n,m) (клетки по четвертой диагонали) Итого: ```python def count_under_attack(n, m): attack_cells = (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1) return attack_cells # Чтение входных данных n = int(input()) m = int(input()) # Вывод результата print(count_under_attack(n, m)) ``` Однако, на шахматной доске, как мы уже научились понимать, клетки, атакуемые слонами, не должны дублироваться. Поэтому мы просто берем количество уникальных клеток. Всего под боем окажется: ```plaintext (2 * (n + m - 2)) ``` Так как в каждом из направлений (вниз налево и вниз направо) каждая клетка атакуется только одним слоном. Исходя из этого мы можем просто вывести результат. Конечный вывод: ```python total_under_attack = (n - 1) + (m - 1) print(total_under_attack) ``` Таким образом, применяя данную логику, мы можем правильно решить задачу за О(1) времени.