[백준] 10464 (XOR)
#PS#BOJ#tier:g4#math

[백준] 10464 (XOR)

해설

XOR이란?

비트 연산 중 하나인 XOR은 두 비트가 다르면 1, 같으면 0을 반환하는 연산입니다.

임의의 짝수와 바로 다음 홀수에 대해, 두 수는 마지막 비트를 제외한 앞부분이 모두 같기 때문에 (2k)(2k+1)=1(2k) \oplus (2k + 1) = 1이 성립합니다.

따라서 0부터 NN까지의 모든 정수를 XOR한 결과는 NN을 4로 나눈 나머지에 따라서만 달라집니다.

  • Nmod4=0N \mod 4 = 0: 0N=N0 \oplus N = N
  • Nmod4=1N \mod 4 = 1: (N1)N=1(N - 1) \oplus N = 1
  • Nmod4=2N \mod 4 = 2: (N2)(N1)N=N+1(N - 2) \oplus (N - 1) \oplus N = N + 1
  • Nmod4=3N \mod 4 = 3: (N3)(N2)(N1)N=0(N - 3) \oplus (N - 2) \oplus (N - 1) \oplus N = 0

이제, SS부터 FF까지의 모든 정수를 XOR한 결과는 01(S1)0 \oplus 1 \oplus \cdots \oplus (S - 1), 01F0 \oplus 1 \oplus \cdots \oplus F를 각각 계산한 뒤 결과를 XOR하여 상쇄시키는 방식으로 구할 수 있습니다.