아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수의 삭제

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

요약
1부터 n까지의 수를 여러 차례 훑으며 매 단계마다 남은 수 중 k번째마다 지울 때, n이 몇 번째 단계에서 지워지는지, 지워지지 않으면 0을 출력한다.
난이도

보통10점 중 7점

유형
수학, 시뮬레이션, 구현, 정수론
정답자
아직 제출이 없습니다

문제

자연수 11부터 nn까지를 일렬로 늘어놓고 자연수 kk가 주어진다.

이 수열에서 수를 삭제하는 작업을 한 번 이상 수행한다. 각 단계에서는 남아 있는 수를 오름차순으로 훑으면서 kk번째 수마다 삭제한다. 어떤 단계가 끝난 뒤 남은 수가 kk개 미만이면 삭제 과정을 끝낸다.

수 nn이 몇 번째 단계에서 삭제되는지, 또는 과정이 끝날 때까지 삭제되지 않는지를 알아내야 한다.

예를 들어 n=13n = 13, k=2k = 2라고 하자.

  • 첫 번째 단계에서 2,4,6,8,10,122, 4, 6, 8, 10, 12가 삭제되고 1,3,5,7,9,11,131, 3, 5, 7, 9, 11, 13이 남는다.
  • 두 번째 단계에서 3,7,113, 7, 11이 삭제되고 1,5,9,131, 5, 9, 13이 남는다.
  • 세 번째 단계에서 5,135, 13이 삭제되고 1,91, 9가 남는다.
  • 네 번째 단계에서 99가 삭제되고 11이 남는다. 수가 하나 남았으므로 과정을 끝낸다.

따라서 1313은 세 번째 단계에서 삭제된다.

주어진 nn과 kk에 대해 nn이 몇 번째 단계에서 삭제되는지 구하는 프로그램을 작성해야 한다.

입력

첫째 줄에 정수 nn이 주어진다 (3≤n≤10183 \le n \le 10^{18}).

둘째 줄에 정수 kk가 주어진다 (2≤k≤1002 \le k \le 100, k<nk < n).

출력

nn이 삭제되는 단계의 번호를 나타내는 정수 하나를 출력한다. nn이 삭제되지 않으면 00을 출력한다.

예제1

  1. 예제 1

    입력
    13
    2
    
    예상 출력
    3