연속 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))