농장 주변의 길

면접 대비

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

요약
N마리의 소와 차이 K가 주어질 때, 크기 s인 무리가 차이가 K인 두 무리로 나뉠 수 있으면 나누고, 더 이상 나뉘지 않는 최종 무리의 수를 구한다.
난이도

보통10점 중 4점

유형
재귀, 수학, 분할 정복, 구현
정답자
아직 제출이 없습니다

문제

존 농부의 소들이 농장 주변 지역을 탐험하는 데 흥미를 갖게 되었다. 처음에 NN (1≤N≤1091 \le N \le 10^9)마리의 소가 모두 한 무리를 이루어 길을 따라 출발한다. 길이 갈라지는 갈림길을 만나면, 무리는 때때로 두 개의 더 작은 (비어 있지 않은) 무리로 나뉘어 각각 한쪽 길로 계속 나아간다. 그 무리들 중 하나가 또 다른 갈림길에 도착하면 다시 나뉠 수 있고, 이런 식으로 계속된다.

소들은 독특한 방식으로 무리를 나눈다. 두 무리의 크기 차이가 정확히 KK (1≤K≤10001 \le K \le 1000)가 되도록 나눌 수 있으면 그렇게 나누고, 그렇지 않으면 탐험을 멈추고 평화롭게 풀을 뜯기 시작한다.

길에는 항상 새로운 갈림길이 있다고 가정할 때, 평화롭게 풀을 뜯는 소 무리가 최종적으로 몇 개가 되는지 구하여라.

입력

첫째 줄에 공백으로 구분된 두 정수 NN과 KK가 주어진다.

출력

첫째 줄에 풀을 뜯는 소 무리의 개수를 나타내는 정수 하나를 출력한다.

힌트

N=6N = 6, K=2K = 2인 경우 최종적으로 3개의 무리(각각 소 2마리, 1마리, 3마리)가 만들어진다.

   6
  / \
 2   4
    / \
   1   3

예제1

  1. 예제 1

    입력
    6 2
    
    예상 출력
    3