X와 K

면접 대비

시간 제한2초메모리 제한128 MB

요약
X와 K가 주어질 때 X+Y가 X OR Y와 같아지는 양의 정수 Y 중 K번째로 작은 값을 구하는 문제로, K의 비트를 X의 0비트 위치에 채우는 방식으로 해결합니다.
난이도

보통10점 중 5점

유형
비트 연산, 수학, 구현
정답자
아직 제출이 없습니다

문제

두 자연수 X와 K가 주어진다. 다음 식을 만족하는 자연수 Y들을 오름차순으로 나열했을 때, K번째로 작은 Y를 구하라.

X + Y = X | Y

여기서 |는 비트 OR 연산이다.

입력

첫째 줄에 두 자연수 X와 K가 공백으로 구분되어 주어진다.

X와 K는 각각 2,000,000,000 이하이다.

출력

식 X + Y = X | Y를 만족하는 자연수 Y 중에서 K번째로 작은 값을 출력한다.

정답은 2^31 - 1보다 클 수 있다.

예제4

  1. 예제 1

    입력
    5 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5 5
    
    예상 출력
    18
    
  3. 예제 3

    입력
    10 3
    
    예상 출력
    5
    
  4. 예제 4

    입력
    1 1000000000
    
    예상 출력
    2000000000