aacord’s memo

abcを中心にpythonで解いた問題のメモ、整理をしています。緑になった。

abc 126 F - XOR Matching (python)

XOR の知識
1.a^a = 0, a^b^a = a^a^b = b(交換法則)
2.n%4 = 1 のとき 1^2^...^n = 1, n%4 = 3 のとき 1^2^...^n = 0 (ABC121 D)

2. から 1^2^...^2**m-1 = 0 となり、1. から k<2**m のとき
1^2^,...,^k-1^k+1^,...,^2**m-1 = k となる。
考察はできたが実装が手こずった。

m,k = map(int,input().split())
if m*k == 1:
  print(-1)
  exit()
  
if k == 0:
  ans = []
  for i in range(2**m):
    ans.append(i)
    ans.append(i)
  print(*ans)
  exit()
  
if 2**m <= k:
  print(-1)
else:
  ans = [k]
  chk = list(range(2**m))
  chk.remove(k)
  ans = ans+chk+[k]+chk[::-1]
  print(' '.join(map(str,ans)))