시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 54 3 3 42.857%

문제

0보다 큰 정수 N0이 주어졌을 때, N1을 N0을 이진수로 나타냈을 때, 1의 개수라고 하자. N0 = 27인 경우, N1 = 4가 된다.

0보다 큰 모든 i에 대해서, Ni를 Ni-1을 이진수로 나타냈을 때, 1의 개수라고 하자. 이 수열은 항상 1으로 수렴한다.

N0이 주어졌을 때, K를 Ni=1을 만족하는 i의 최소값이라고 하자. 예를 들면, N0=31인 경우, N1=5, N2=2, N3=1이기 때문에 K=3이다.

연속된 범위와 어떤 수 X가 주어졌을 때, 범위 안의 숫자를 각각 N0으로 했을 때, K값이 X가 되는 경우는 몇 가지가 있는지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있고, 각 케이스는 한 줄로 이루어져 있다. 범위를 나타내는 LO와 HI 그리고 X가 주어진다. (1 ≤ LO ≤ HI ≤ 1018, 0 ≤ X ≤ 10) 입력의 마지막 줄에는 0이 3개 주어진다.

출력

각 테스트 케이스에 대해서, LO부터 HI를 포함하는 범위 내의 정수를 N0으로 했을 때, K값이 X가 되는 것의 개수를 출력한다.

예제 입력

31 31 3
31 31 1
27 31 1
27 31 2
1023 1025 1
1023 1025 2
0 0 0

예제 출력

1
0
0
3
1
1

힌트