만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

부러운 지수

면접 대비

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

요약
N과 k가 주어질 때, 이진수로 표현했을 때 1이 정확히 k개인 수 중 N보다 큰 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

앨리스와 밥에게는 정수 NN이 하나 있다. 두 사람은 이 정수가 마음에 들지 않는다. 어젯밤 칵테일 파티에 갔다가 다른 커플이 똑같은 정수를 쓰고 있다는 사실을 알았기 때문이다. 그래서 두 사람은 새 정수를 하나 장만하기로 했다.

밥은 다른 커플에게 깊은 인상을 주고 싶어서, 새 정수가 NN보다 반드시 커야 한다고 생각한다.

앨리스는 정수 kk를 유난히 좋아한다. 그래서 어떤 정수를 고르든 서로 다른 2의 거듭제곱 kk개의 합으로 쓸 수 있어야 한다고 생각한다.

밥은 구두쇠이기도 해서 돈을 되도록 적게 쓰고 싶어 한다. 정수의 값이 클수록 값도 비싸지므로, 밥은 조건을 만족하는 정수 중 가장 작은 것을 원한다.

입력

첫째 줄에 정수 NN과 kk가 공백으로 구분되어 주어진다. (1≤N≤10181 \le N \le 10^{18}, 1≤k≤601 \le k \le 60)

출력

NN보다 크면서 서로 다른 2의 거듭제곱 정확히 kk개의 합으로 나타낼 수 있는 가장 작은 정수 MM을 출력한다.

예제4

  1. 예제 1

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

    입력
    12 2
    
    예상 출력
    17
    
  3. 예제 3

    입력
    1 5
    
    예상 출력
    31
    
  4. 예제 4

    입력
    182 3
    
    예상 출력
    193