結果
| 問題 |
No.223 1マス指定の魔方陣
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 23:22:07 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,547 bytes |
| コンパイル時間 | 142 ms |
| コンパイル使用メモリ | 82,900 KB |
| 実行使用メモリ | 54,856 KB |
| 最終ジャッジ日時 | 2025-04-15 23:23:57 |
| 合計ジャッジ時間 | 3,429 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 16 WA * 30 |
ソースコード
def generate_transformations(magic_square):
n = len(magic_square)
transforms = []
# Original
transforms.append([row.copy() for row in magic_square])
# Upside down
transforms.append([row.copy() for row in reversed(magic_square)])
# Left-right flipped
transforms.append([list(reversed(row)) for row in magic_square])
# Transposed
transposed = [list(row) for row in zip(*magic_square)]
transforms.append(transposed)
# Rotated 90 degrees
rotated = [list(reversed(col)) for col in zip(*magic_square)]
transforms.append(rotated)
# Rotated 180 degrees
rotated180 = [list(reversed(row)) for row in reversed(magic_square)]
transforms.append(rotated180)
# Rotated 270 degrees
rotated270 = [list(col) for col in reversed(list(zip(*magic_square)))]
transforms.append(rotated270)
# Complement (n^2 + 1 - num)
complement = [[n*n + 1 - num for num in row] for row in magic_square]
transforms.append(complement)
return transforms
def find_magic_square(n, x, y, z, magic_squares):
target_y = y - 1
target_x = x - 1
for magic in magic_squares:
transforms = generate_transformations(magic)
for t in transforms:
if t[target_y][target_x] == z:
return t
return None
# Predefined 4x4 magic squares
magic_squares_4x4 = [
[
[3, 13, 16, 2],
[10, 8, 5, 11],
[6, 12, 9, 7],
[15, 1, 4, 14]
],
[
[1, 15, 14, 4],
[12, 6, 7, 9],
[8, 10, 11, 5],
[13, 3, 2, 16]
],
[
[16, 2, 3, 13],
[5, 11, 10, 8],
[9, 7, 6, 12],
[4, 14, 15, 1]
],
[
[13, 8, 12, 1],
[3, 10, 6, 15],
[2, 11, 7, 14],
[16, 5, 9, 4]
],
[
[4, 14, 15, 1],
[9, 7, 6, 12],
[5, 11, 10, 8],
[16, 2, 3, 13]
],
[
[5, 11, 10, 8],
[16, 2, 3, 13],
[4, 14, 15, 1],
[9, 7, 6, 12]
]
]
n, x, y, z = map(int, input().split())
found = None
if n == 4:
magic_squares = magic_squares_4x4
for magic in magic_squares:
transforms = generate_transformations(magic)
for t in transforms:
if t[y-1][x-1] == z:
found = t
break
if found:
break
if found:
for row in found:
print(' '.join(map(str, row)))
else:
# For N=8 and N=16, a different approach is needed, but here we handle N=4 only
pass
lam6er