πŸ–₯ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ магичСского ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°



ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ ΠΈΠ·Π΄Π°Π²Π½Π° ΠΈΠ½Ρ‚Ρ€ΠΈΠ³ΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ людСй: Π΄Π°Ρ‚Π° изготовлСния Π΄Ρ€Π΅Π²Π½Π΅ΠΉΡˆΠ΅ΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ²ΡˆΠ΅ΠΉΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ относится ΠΊ 2200 Π³. Π΄ΠΎ Π½.э. ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ – это квадратная Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° n Ρ… n, составлСнная ΠΈΠ· всСх чисСл 1, 2, 3 … n2 Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ суммы ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ столбцу, ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ Ρ€Π°Π²Π½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. НапишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая опрСдСляСт, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ магичСским ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠΌ.



Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:



Число n, Π·Π°Ρ‚Π΅ΠΌ n строк с n Ρ†ΠΈΡ„Ρ€ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ.





#ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π°

3

8 1 6

3 5 7

4 9 2




Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:



YES, Ссли ввСдСнная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° являСтся магичСским ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠΌ, ΠΈ NO Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ случаС.





#ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°

YES



РСшСниС

Бпособ 1:




n = int(input())

matrix = [list(map(int, input().split())) for _ in range(n)]

if all(i in sum(matrix,[]) for i in range(1, n**2 + 1)):

print('YES' if all(sum(i) == sum(j) == sum([matrix[i][i] for i in range(n)]) == sum([matrix[n-i-1][i] for i in range(n)]) for i in matrix for j in list(map(list, zip(*matrix)))) else 'NO')

else:

print('NO')





Бпособ 2 – с магичСской константой ΠΈ мноТСствами:



n = int(input())

square = [[*map(int, input().split())] for _ in range(n)]

m_const = n * (1 + n ** 2) // 2

print(('NO', 'YES')[all(sum(el) == m_const for x in (((square[i][i] for i in range(n)),(square[i][~i] for i in range(n))), square, zip(*square)) for el in x) and set(sum(square, [])) == set(range(1, n ** 2 + 1))])




@python_job_interview