結果

問題 No.283 スライドパズルと魔方陣
ユーザー gew1fw
提出日時 2025-06-12 21:39:48
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,357 bytes
コンパイル時間 189 ms
コンパイル使用メモリ 81,664 KB
実行使用メモリ 60,032 KB
最終ジャッジ日時 2025-06-12 21:43:51
合計ジャッジ時間 4,566 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 11 WA * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

def generate_magic_square(n):
    if n % 2 == 1:
        magic = [[0 for _ in range(n)] for _ in range(n)]
        i, j = 0, n // 2
        for num in range(1, n * n + 1):
            magic[i][j] = num
            i -= 1
            j += 1
            if i < 0 and j >= n:
                i += 2
                j -= 1
            elif i < 0:
                i = n - 1
            elif j >= n:
                j = 0
            elif magic[i][j] != 0:
                i += 2
                j -= 1
        return magic
    else:
        if n == 4:
            return [
                [16, 3, 2, 13],
                [5, 10, 11, 8],
                [9, 6, 7, 12],
                [4, 15, 14, 1]
            ]
        else:
            magic = [[0 for _ in range(n)] for _ in range(n)]
            for i in range(n):
                for j in range(n):
                    if (i + j) % 2 == 0:
                        magic[i][j] = i * n + j + 1
                    else:
                        magic[i][j] = (i - 1) * n + n - j
            return magic

n = int(input())
if n == 1:
    a = list(map(int, input().split()))
    print("possible")
    print(1)
elif n == 2:
    for _ in range(n):
        input()
    print("impossible")
else:
    magic = generate_magic_square(n)
    print("possible")
    for row in magic:
        print(' '.join(map(str, row)))
0