문제
컴퓨터상에서 정수의 표현은 비트(2진수)로 표현 할 수 있다.
예를 들어 32비트로 6을 표현하면 다음과 같다.
0000 0000 0000 0000 0000 0000 0000 0110
그리고 -6을 표현하면 다음과 같으며,
1111 1111 1111 1111 1111 1111 1111 1010
이 둘을 더한 식과 결과를 나타내면 아래와 같다.
32비트로 표현되는 m이상 n이하의 숫자가 있다. (m≤i≤n; m x n≥0, -231≤m≤n≤231-1).
m이상 n이하의 숫자를 비트로 표현했을 경우 1의 숫자가 적은 순서대로 정렬을 하고자 한다.
만약 1의 개수가 같을 경우 작은 숫자가 우선으로 나오도록 한다.
만약 m = 0이고 n = 5가 되면 다음과 같이 정렬된다.
m = -5 이고 n = -2 일 경우는 다음과 같다.
m, n과 k가 주어졌을 때(1≤k≤min(n-m+1,2147473547))
위의 방식대로 정렬 했을 경우의 숫자 중 k번째로 나타나는 숫자를 출력하라.
입력
입력은 한 줄에 m과 n 그리고 k가 입력된다.
출력
입력에 대해 k번째로 나타나는 숫자를 출력한다.
예제 #1
0 5 3
2
예제 #2
-5 -2 2
-5
출처
ACM ICPC 2006, Asia Regional Contest, site Hanoi