В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
laf03
laf03
20.05.2020 10:54 •  Информатика

Питон , Магическим квадратом называют таблицу, в которой записаны числа 1,2,3,… по одному разу, так что сумма чисел в каждой строке и в каждом столбце равные. Мы расскажем вам об одном из методов построения магических квадратов (его называют сиамским). Он годится только для построения квадратов с нечётной стороной (3×3,5×5,…).

Поставим число 1 в верхнюю клетку центрального столбца. Далее будем двигаться по диагонали вправо-вверх, расставляя в клетки последовательно числа 2,3,4,…. Если мы вышли за пределы таблицы вверх, то нужно перейти к нижней клетке того же столбца и продолжить с неё. Если мы вышли за правую границу, нужно перейти к левой клетке той строки, куда мы должны были попасть. Если же мы одновременно вышли и вверх, и вправо, то нужно перейти в левую нижнюю клетку квадрата.

Если в следующей клетке на нашем пути уже стоит число, то вместо хода “вправо-вверх” нужно сделать ход “вниз” (опять же, если мы при этом выйдем за границы квадрата, нужно перейти к верхней клетке того же столбца). Примеры для квадратов 3×3 и 5×5 показаны на рисунках.

Показать ответ
Ответ:
Gunelka23333
Gunelka23333
31.08.2022 05:10

i_n, i_m = input().split()

n = []

m = []

res = ""

n_excluded = []

for n_i in range(int(i_n)):

x1, y1, x2, y2 = input().split()

n.append({

"x1": int(x1), "y1": int(y1),

"x2": int(x2), "y2": int(y2)

})

for m_i in range(int(i_m)):

x, y = input().split()

m.append({

"x": int(x), "y": int(y)

})

for mm in m:

jar_num = 1

collision = False

for nn in n:

if jar_num not in n_excluded and nn['x1'] <= mm['x'] <= nn['x2'] and nn['y1'] <= mm['y'] <= nn['y2']:

collision = True

n_excluded.append(jar_num)

break

jar_num += 1

if collision:

res += " " + str(jar_num)

else:

res += " -1"

print(res)

Объяснение:

Это решение подходит только для E1. В E2 - ошибка Runtime Exception

0,0(0 оценок)
Ответ:
daryabozhko2006
daryabozhko2006
31.08.2022 05:10

ответ:

работает с e1, но в e2 выдает time limit exceeded на 57 тесте

объяснение:

m, n = map(int,

bank = []

bull = []

for i in range(m):

    bank.append(list(map(int,

for i in range(n):

    bull.append(list(map(int,

shoted = [true] * m

ns = [-1] * n

for i in range(n):

    for j in range(m):

        if bank[j][0] < = bull[i][0] < = bank[j][2] and bank[j][1] < = bull[i][1] < = bank[j][3] and shoted[j]:

            shoted[j] = false

            ns[i] = j + 1

            break

for k in ns:

    print(k, end=' ')

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота