結果
問題 |
No.223 1マス指定の魔方陣
|
ユーザー |
![]() |
提出日時 | 2025-03-26 15:51:54 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,918 bytes |
コンパイル時間 | 169 ms |
コンパイル使用メモリ | 82,576 KB |
実行使用メモリ | 54,932 KB |
最終ジャッジ日時 | 2025-03-26 15:52:40 |
合計ジャッジ時間 | 4,405 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 5 WA * 41 |
ソースコード
import sys def generate_base(N): if N == 4: # Predefined magic square from the sample output return [ [3, 13, 16, 2], [10, 8, 5, 11], [6, 12, 9, 7], [15, 1, 4, 14] ] else: # Generate for N=8 and 16 using the standard method for doubly even orders matrix = [[i * N + j + 1 for j in range(N)] for i in range(N)] for i in range(N): for j in range(N): if (i % 4 == j % 4) or (i % 4 + j % 4 == 3): matrix[i][j] = N * N + 1 - matrix[i][j] return matrix def rotate_90(matrix): return [list(row) for row in zip(*matrix[::-1])] def rotate_180(matrix): return rotate_90(rotate_90(matrix)) def rotate_270(matrix): return rotate_90(rotate_180(matrix)) def reflect_vertical(matrix): return [row[::-1] for row in matrix] def reflect_horizontal(matrix): return matrix[::-1] def transpose(matrix): return [list(row) for row in zip(*matrix)] def reflect_diag(matrix): return transpose(matrix) def reflect_anti_diag(matrix): return rotate_90(reflect_vertical(matrix)) def generate_transformations(matrix): transforms = [] transforms.append(matrix) transforms.append(rotate_90(matrix)) transforms.append(rotate_180(matrix)) transforms.append(rotate_270(matrix)) transforms.append(reflect_vertical(matrix)) transforms.append(reflect_horizontal(matrix)) transforms.append(reflect_diag(matrix)) transforms.append(reflect_anti_diag(matrix)) return transforms def solve(): N, X, Y, Z = map(int, sys.stdin.readline().split()) X -= 1 # Convert to 0-based Y -= 1 base = generate_base(N) transforms = generate_transformations(base) for t in transforms: if t[Y][X] == Z: for row in t: print(' '.join(map(str, row))) return solve()