結果
| 問題 |
No.2212 One XOR Matrix
|
| コンテスト | |
| ユーザー |
rlangevin
|
| 提出日時 | 2024-04-25 00:29:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 388 ms / 2,000 ms |
| コード長 | 1,372 bytes |
| コンパイル時間 | 171 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 254,592 KB |
| 最終ジャッジ日時 | 2024-11-07 09:54:07 |
| 合計ジャッジ時間 | 3,376 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 8 |
ソースコード
def check(X):
N = len(X)
S = set()
for i in range(N):
v = 0
for j in range(N):
v ^= X[i][j]
S.add(X[i][j])
assert v == 1
for i in range(N):
v = 0
for j in range(N):
v ^= X[j][i]
assert v == 1
assert len(S) == N ** 2
assert max(S) == N ** 2 - 1
def solve(N):
if N == 1:
print(-1)
return
L = [[7, 14, 0, 8],
[4, 12, 2, 11],
[15, 9, 6, 1],
[13, 10, 5, 3,]]
for n in range(3, N + 1):
n2 = 1 << n
temp = [[0] * n2 for _ in range(n2)]
for i in range(n2//2):
for j in range(n2//2):
temp[i][j] = L[i][j]
now = 0
for i in range(n2//2, n2):
for j in range(n2//2):
temp[i][j] = now + 2 ** (2 * n - 2)
now += 1
now = 0
for i in range(n2//2):
for j in range(n2//2, n2):
temp[i][j] = now + 2 ** (2 * n - 1)
now += 1
for i in range(n2//2, n2):
for j in range(n2//2, n2):
temp[i][j] = L[i - n2//2][j - n2//2] + 3 * 2 ** (2 * n - 2)
L, temp = temp, L
for a in L:
print(*a)
check(L)
N = int(input())
solve(N)
rlangevin