Page not loading? Try clicking here.
Placeholder

#1188

비트방정식 1s 128MB

Problems

양의 정수 X와 K가 주어졌을 때, 다음의 방정식을 만족하는 임의의 양의 정수 Y 중에서 K번째로 작은 숫자를 찾는 프로그램을 작성하라.

X + Y = X | Y

여기서 '|'는 OR연산을 뜻한다. OR연산은 두개의 정수를 2진수로 바꾼 다음에 2진수로 이뤄진 숫자의 동일한 위치에 대해서 둘다 0일 경우 0, 둘 중에 하나라도 1일 경우 1을 취하는 연산자다.

예를 들어 X가 3이고, Y가 6일 경우 X | Y는 다음과 같다. 011 OR 110 = 111, 111을 10진수로 바꾸면 7이므로, 3 | 6 = 7이 된다.


Input

입력은 한 줄로 이뤄지며 양의 정수 X와 K가 입력된다. X와 K는 1 이상 2,000,000,000 이하의 숫자다.


Output

입력에 대해 방정식을 만족하는 임의의 정수 Y 중에 K번째로 작은 숫자를 출력한다.


Example #1

5 1
2

Example #2

5 5
18

Example #3

10 3
5

Example #4

1 150000
250000

Source

Online Contest
You must sign in to write code.