얼룩말과 사자

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

요약
사자 N마리가 있을 때 매년 반복되는 규칙 아래에서 얼룩말이 영원히 사라지지 않도록 하는 최소 마릿수를 구한다. 답은 N에 대해 지수적으로 커진다.
난이도

보통10점 중 6점

유형
수학, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

사파리 투어를 나선 건덕이는 얼룩말과 사자에 관심이 많았다. 얼룩말과 사자가 있는 초원에서는 아래와 같은 일이 매년 한 번씩 차례대로 발생한다.

  • 얼룩말이 AA마리 있다면, 얼룩말이 ⌊A2⌋\lfloor\frac{A}{2}\rfloor마리 증가한다.
  • 사자 한 마리당 얼룩말을 한 마리씩 잡아먹는다. 즉, 사자가 BB마리 있다면 얼룩말이 BB마리 감소한다. 만약 얼룩말이 BB마리보다 적다면 모두 잡아먹힌다.

사자가 NN마리 있을 때 얼룩말이 영원히 없어지지 않으려면, 얼룩말이 최소 몇 마리가 있어야 할지 구해보자.

입력

사자의 수를 의미하는 정수 NN이 주어진다. (1≤N≤1018)(1\leq N\leq 10^{18})

출력

얼룩말이 영원히 없어지지 않기 위해 필요한 얼룩말의 최소 마릿수를 출력한다.

힌트

⌊X⌋\left\lfloor X \right\rfloor는 내림 함수로써 XX보다 작거나 같은 정수 중 최댓값을 의미합니다. 예를 들어 ⌊52⌋=2\left\lfloor \frac{5}{2}\right\rfloor = 2, ⌊4⌋=4\left\lfloor 4\right\rfloor = 4입니다.

정답이 매우 커질 수 있음에 유의해 주세요. C/C++에서는 int대신 long long을, Java에서는 long 자료형을 사용하는 것을 권장합니다. Python은 기본적으로 큰 수를 지원하므로 정수 자료형을 고려할 필요가 없습니다.

예제1

  1. 예제 1

    입력
    3
    
    예상 출력
    6