시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
이진 부호화는 0부터 2n−1까지의 각 정수를 정확히 n개의 비트로 나타내며, 각 비트는 0 또는 1이다. 가장 큰 자리(최상위 비트)를 먼저 쓰고, 두 부호를 비교할 때는 최상위 비트부터 최하위 비트 방향으로 왼쪽에서 오른쪽으로 비교한다. 부호는 정수를 오름차순으로 나열했을 때 그 부호들도 오름차순이 되도록 배정한다. 예를 들어 0부터 7까지의 이진 부호화는 다음과 같다.
| 정수 | 부호 | 정수 | 부호 |
|---|---|---|---|
| 0 | 000 | 4 | 100 |
| 1 | 001 | 5 | 101 |
| 2 | 010 | 6 | 110 |
| 3 | 011 | 7 | 111 |
절단 이진 부호화는 이를 일반화하여 0부터 m−1까지의 정수를 나타내는데, 이때 m은 어떤 n에 대해서도 2n과 같지 않을 수 있다. 보통의 이진 부호화와 달리, 서로 다른 정수를 나타낼 때 서로 다른 개수의 비트를 사용할 수 있다. m≤2n을 만족하는 가장 작은 정수를 n이라 하자. 그러면 절단 이진 부호화는 각 정수를 n개 또는 n−1개의 비트로 나타낸다. 어떤 정수가 n−1개의 비트만 사용하는 경우는 오직 m<2n일 때뿐이며, m=2n이면 절단 이진 부호화는 보통의 이진 부호화와 같아진다. 절단 이진 부호도 이진 부호와 마찬가지로 왼쪽에서 오른쪽으로 비교한다.
절단 이진 부호화는 다음 규칙도 만족한다.
예를 들어 0부터 5까지의 절단 이진 부호화는 다음과 같다.
| 정수 | 부호 | 정수 | 부호 |
|---|---|---|---|
| 0 | 00 | 4 | 110 |
| 1 | 01 | 5 | 111 |
| 2 | 100 | ||
| 3 | 101 |
0부터 m−1까지의 정수를 절단 이진 부호화로 부호화하라.
입력은 정수 m 하나를 포함한다 (2≤m≤10000).
m개의 줄을 출력한다. 0부터 m−1까지의 각 i에 대해, i번째 줄에는 정수 i의 절단 이진 부호를 출력한다. 따라서 부호들은 그것이 나타내는 정수의 오름차순으로 출력된다.