만드는 중입니다

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

카드 마술

면접 대비

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

요약
n과 m이 주어질 때, 선택한 카드가 어느 위치에 있든 맨 위로 올라오게 하는 최소 연산 횟수 k를 구합니다.
난이도

보통10점 중 4점

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

문제

짐은 마술사다. 정확히 말하면 카드 마술이 주 특기인 마술사다.

짐은 최근 새로운 카드 마술을 고안했다. 처음에 이 마술은 서로 다른 nn장의 카드로 이루어진 카드 묶음을 사용한다. 그다음 관객이 묶음에서 카드 한 장을 고르고, 그 카드를 기억한 뒤 묶음에 다시 넣는다. 그리고 카드를 꼼꼼히 섞는다.

마술은 여기서 시작된다. 짐은 섞인 묶음을 카드 뒷면이 위를 향하도록 든다. 그리고 카드를 mm개의 더미로 나눈다. 맨 위 카드는 1번 더미에, 위에서 두 번째 카드는 2번 더미에 놓는다. (m+1)(m+1)번째 카드가 있으면 다시 1번 더미에 놓고, (m+2)(m+2)번째 카드는 2번 더미에 놓는 식으로 계속한다. 그런 다음 짐은 관객에게 고른 카드가 어느 더미에 있는지 묻는다. 카드가 ii번째 더미에 있다고 하자. 짐은 더미들을 다시 모아 한 묶음으로 만든다. ii번째 더미가 새 묶음의 맨 위가 되고, 그 아래에 i+1i+1번째 더미가 놓인다. 이렇게 nn번째 더미까지 이어진 뒤, 1번 더미부터 i−1i-1번째 더미까지가 차례로 놓인다. 각 더미 안의 카드 순서는 그대로 유지된다. 즉 더미에 처음 놓은 카드가 그 더미의 맨 위에 있고, 두 번째 카드가 그 아래에 있다.

짐은 이 작업을 여러 번 반복한 끝에 고른 카드가 묶음의 맨 위에 오도록 만들었다고 말한다. 마법으로 그렇게 했다고 하며, 실제로 카드는 맨 위에 와 있다.

예를 들어 n=6n = 6이고 카드가 1부터 6까지 번호가 매겨져 있으며 m=2m = 2라고 하자. 관객이 카드 1을 골랐고, 섞인 묶음은 (4,2,1,5,6,3)(4, 2, 1, 5, 6, 3)이다. 첫 번째 나눔으로 (4,1,6)(4, 1, 6)과 (2,5,3)(2, 5, 3) 두 더미가 생기고, 이를 모으면 묶음은 (4,1,6,2,5,3)(4, 1, 6, 2, 5, 3)이 된다. 다음 단계에서는 (4,6,5)(4, 6, 5)와 (1,2,3)(1, 2, 3) 더미가 생기고, 묶음은 (1,2,3,4,6,5)(1, 2, 3, 4, 6, 5)가 된다. 고른 카드 1이 맨 위에 왔다.

카드를 몇 번 반복해야 하는지는 고른 카드와 묶음 안 카드의 배열에 따라 달라진다. 그래도 카드가 묶음의 어디에 있든, 그리고 어떤 카드를 골랐든, 나눔을 kk번 반복하면 고른 카드가 반드시 맨 위에 오는 최소의 수 kk가 존재한다.

주어진 nn과 mm에 대해 최소 kk를 구하는 프로그램을 작성하시오.

입력

첫 줄에 두 정수 nn과 mm이 주어진다 (2≤m≤n≤1092 \le m \le n \le 10^{9}).

출력

고른 카드가 반드시 묶음의 맨 위에 오도록 하는 데 필요한 최소 나눔 횟수 kk를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    21 3
    
    예상 출력
    3