xor 연산은 두 수의 이진수 표현에서 각 자릿수를 비교해 값이 같으면 0, 다르면 1을 계산한다.
다음은 16자리 이진수 A=12, B=10, R=A xor B에 대한 예시이다.
| index | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| B | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
| R | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
A와 B가 모두 16자리 이진수이므로, R 또한 16자리 이진수이다.
R의 4번째 비트는 A의 4번째 비트와 B의 4번째 비트가 1로 같으므로 0이다.
R의 2번째 비트는 A의 2번째 비트와 B의 2번째 비트가 각각 0, 1로 다르므로 1이다.
모든 자릿수에 대해 연산을 수행하면 R은 위와 같이 계산된다.
K자리 이진수 A ,B ,C에 대해 1≤A<B<C≤2K−1이고 A xor B=C인 (A,B,C) 쌍의 개수를 구하시오.
첫 번째 줄에 K 가 주어진다. (2≤K≤1018)
주어진 조건을 만족하는 (A,B,C) 쌍의 개수를 1,000,003으로 나눴을 때 나머지를 출력한다. 단, 1,000,003은 소수이다.