해밍 거리

시간 제한1초메모리 제한1024 MB

문제

두 정수의 해밍 거리란, 각각을 이진수로 나타내었을 때 비트가 서로 다른 위치의 개수를 의미한다.

예를 들어, $9$와 $12$의 해밍 거리를 구해 보자.

$$ \begin{aligned} 9 &= 1001_{(2)} \\ 12 &= 1100_{(2)} \end{aligned} $$

$2^0$의 자리와 $2^2$의 자리에서 비트가 서로 다르므로 해밍 거리는 $2$이다.

두 수의 자릿수가 다르다면 상위 비트에 $0$을 붙여서 비교한다. 예를 들어, $3$과 $11$의 해밍 거리를 구해 보자.

$$ \begin{aligned} 3 &= 0011_{(2)} \\ 11 &= 1011_{(2)} \end{aligned} $$

$2^3$의 자리에서 비트가 서로 다르므로 해밍 거리는 $1$이다.

$A$ 이상 $B$ 이하의 정수 중에서, 해밍 거리가 최대인 두 정수를 구하시오.

입력

정수 $A$와 $B$가 공백으로 구분되어 주어진다. $(1 \le A < B \le 10^{18})$

$A$, $B$가 32비트 정수 범위를 넘을 수 있음에 주의하라.

출력

$A$ 이상 $B$ 이하의 정수 중에서, 해밍 거리가 최대인 두 정수를 공백으로 구분하여 출력한다.

그러한 정수 쌍이 여러 개라면 그중 아무거나 하나만 출력한다.

힌트

첫 번째 예제의 출력을 이진수로 나타내면 다음과 같다.

$$ \begin{aligned} 6 &= 0110_{(2)} \\ 9 &= 1001_{(2)} \end{aligned} $$

각 위치의 비트를 비교했을 때 서로 다른 비트의 수는 $4$개이므로 해밍 거리는 $4$이며, 이것이 최대이다.

두 번째 예제의 출력을 이진수로 나타내면 다음과 같다.

$$ \begin{aligned} 29 &= 11101_{(2)} \\ 26 &= 11010_{(2)} \end{aligned} $$

각 위치의 비트를 비교했을 때 서로 다른 비트의 수는 $3$개이므로 해밍 거리는 $3$이며, 이것이 최대이다.