연속 XOR
난이도
Gold 4
인증
문제
준원이는 다음과 같이 $A$에서 $B$까지의 자연수들을 나열했다.
\(A, A+1, A+2, \dots, B-2, B-1, B\)
이 수들에 모두 비트 XOR을 취한 값을 구하라.
입력
두 자연수 $A$, $B$가 공백을 사이에 두고 주어진다.
출력
$A$ 이상 $B$ 이하인 모든 자연수들을 XOR한 값을 구하여라
예제 입력
3 4
예제 출력
7
해설 및 후기
XOR의 특성을 알고있어야 한다. 1부터 X까지의 XOR연산은 4로 나눈 나머지에 따라 O(1)로 결정할 수 있다. 문제의 경우 A부터 B까지의 XOR연산을 구하고자 하기 때문에, A to B = (1 to A-1) ^ (1 to A-1) ^ (A to B) 이고, (1 to A-1) ^ (A to B) 는 (1 to B) 이므로,
(1 to A-1) ^ (1 to B) 를 구하게 된다.
제출 코드
a,b = map(int, input().split())
def oneToX(n):
if(n%4 == 0):
return n
elif(n%4 == 1):
return 1
elif(n%4 ==2):
return n+1
else:
return 0
print(oneToX(a-1)^oneToX(b))