practivceAlgorithm/codeforce
[Codefroce][Python] div.3 #731 - D. Co-growing Sequence
findTheValue
2021. 10. 3. 04:29
앞전의 이진수에서 1이 있는 자릿수를 계승하는 수열을 growing sequence라 하고
그렇지 않은 수열을 xor연산을 통해 growing sequence로 만들어 주는 수열을 Co-growing Sequence라 합니다.
전에 있는 값을 pivot으로 가져가야할 1의 위치를 저장하는 기준값으로 정하고 pivot에는 1이 있는데 현 수열의 값에는 없다면 Co-growing Sequence가 그만큼의 값을 가져가게끔 코드를 짰습니다.
import sys
input = sys.stdin.readline
for test in range(int(input())):
n = int(input())
x = list(map(int, input().split()))
pivot = x[0]
y = [0] * n
for i in range(1, n):
l = len(bin(pivot)[2:])
for j in range(l):
k = (1 << j)
if pivot & k and not x[i] & k:
y[i] += k
pivot = x[i] ^ y[i]
print(*y)