시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 219 | 41 | 30 | 37.037% |
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
ICPC > Regionals > North America > Southeast USA Regional > 2010 Southeast USA Regional Programming Contest B번