카드 마술
면접 대비시간 제한2초메모리 제한1024 MB
n과 m이 주어질 때, 선택한 카드가 어느 위치에 있든 맨 위로 올라오게 하는 최소 연산 횟수 k를 구합니다.
문제
짐은 마술사다. 정확히 말하면 카드 마술이 주 특기인 마술사다.
짐은 최근 새로운 카드 마술을 고안했다. 처음에 이 마술은 서로 다른 장의 카드로 이루어진 카드 묶음을 사용한다. 그다음 관객이 묶음에서 카드 한 장을 고르고, 그 카드를 기억한 뒤 묶음에 다시 넣는다. 그리고 카드를 꼼꼼히 섞는다.
마술은 여기서 시작된다. 짐은 섞인 묶음을 카드 뒷면이 위를 향하도록 든다. 그리고 카드를 개의 더미로 나눈다. 맨 위 카드는 1번 더미에, 위에서 두 번째 카드는 2번 더미에 놓는다. 번째 카드가 있으면 다시 1번 더미에 놓고, 번째 카드는 2번 더미에 놓는 식으로 계속한다. 그런 다음 짐은 관객에게 고른 카드가 어느 더미에 있는지 묻는다. 카드가 번째 더미에 있다고 하자. 짐은 더미들을 다시 모아 한 묶음으로 만든다. 번째 더미가 새 묶음의 맨 위가 되고, 그 아래에 번째 더미가 놓인다. 이렇게 번째 더미까지 이어진 뒤, 1번 더미부터 번째 더미까지가 차례로 놓인다. 각 더미 안의 카드 순서는 그대로 유지된다. 즉 더미에 처음 놓은 카드가 그 더미의 맨 위에 있고, 두 번째 카드가 그 아래에 있다.
짐은 이 작업을 여러 번 반복한 끝에 고른 카드가 묶음의 맨 위에 오도록 만들었다고 말한다. 마법으로 그렇게 했다고 하며, 실제로 카드는 맨 위에 와 있다.
예를 들어 이고 카드가 1부터 6까지 번호가 매겨져 있으며 라고 하자. 관객이 카드 1을 골랐고, 섞인 묶음은 이다. 첫 번째 나눔으로 과 두 더미가 생기고, 이를 모으면 묶음은 이 된다. 다음 단계에서는 와 더미가 생기고, 묶음은 가 된다. 고른 카드 1이 맨 위에 왔다.
카드를 몇 번 반복해야 하는지는 고른 카드와 묶음 안 카드의 배열에 따라 달라진다. 그래도 카드가 묶음의 어디에 있든, 그리고 어떤 카드를 골랐든, 나눔을 번 반복하면 고른 카드가 반드시 맨 위에 오는 최소의 수 가 존재한다.
주어진 과 에 대해 최소 를 구하는 프로그램을 작성하시오.
입력
첫 줄에 두 정수 과 이 주어진다 ().
출력
고른 카드가 반드시 묶음의 맨 위에 오도록 하는 데 필요한 최소 나눔 횟수 를 한 줄에 출력한다.