Logo
(追記) (追記ここまで)

21320번 - 순간이동 여행

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB2791018941.204%

문제

민겸이는 높이가 N인 포화 이진 트리를 여행하기로 했다. 높이가 N인 포화 이진 트리란, 루트 노드에서 어떤 리프 노드까지 이동할 때 최소 N - 1번 이동해야 하는 포화 이진 트리를 말한다. 각 노드에는 번호가 매겨져 있는데, 루트 노드는 1번이고, 모든 인터널 노드(리프 노드가 아닌 노드)에 대해 인터널 노드가 P번 노드일 때, 해당 노드의 왼쪽 자식은 P × 2번 노드이고, 오른쪽 자식은 P × 2 + 1번 노드이다.

아래 그림은 높이가 4인 포화 이진 트리의 예시이다.

민겸이는 여행을 위해 어떤 노드에 도착했다. 민겸이는 자신이 위치한 노드와 연결된 인접한 노드로 걸어서 이동할 수 있다. 하지만 민겸이는 한 번 방문했던 노드를 다시는 방문하지 않는다. 이 때문에 모든 노드를 방문할 수 없을 수도 있다는 것을 깨달은 민겸이는 순간이동기를 준비했다. 순간이동기는 민겸이를 방문하지 않은 노드 중 원하는 노드로 순간이동시켜준다. 하지만, 순간이동 할 때마다 엄청난 돈이 들기 때문에, 민겸이는 순간이동 횟수를 최소화하고 싶다.

민겸이가 여행을 시작할 노드 번호가 주어질 때, 민겸이가 모든 노드를 방문하기 위해서 순간이동을 최소 몇 번 해야 하는지 알아보자.

입력

포화 이진 트리의 높이 N(1 ≤ N ≤ 3,000), 정수 K(1 ≤ KN)가 주어진다. 민겸이는 2K - 1번 노드에서 여행을 시작한다.

출력

민겸이가 모든 노드를 방문할 때까지 순간이동을 최소 몇 번 해야 하는지 출력한다. 단, 답이 너무 커질 수 있으므로, 답을 109 + 7로 나눈 나머지를 출력한다.

제한

예제 입력 1

4 1

예제 출력 1

5

위 그림과 같이 이동하면 5번의 순간이동으로 모든 노드를 방문할 수 있다. 더 적은 순간이동으로 모든 노드를 방문하는 방법은 없다.

예제 입력 2

4 2

예제 출력 2

4

힌트

출처

University > 인하대학교 > 2021 IGRUS Newbie Programming Contest I번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /