Skew Binary (편향 이진법)

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

요약
주어진 스큐 이진수를 십진수로 변환해 출력하고, 0이 나오면 입력을 종료한다.
난이도

쉬움10점 중 3점

유형
수학, 문자열, 구현
정답자
아직 제출이 없습니다

문제

수를 십진법으로 나타내면, 오른쪽에서 kk번째 자리(가장 오른쪽 자리를 00번째로 셈)는 10k10^k의 배수를 나타낸다. 예를 들어,

8130710=8×104+1×103+3×102+0×101+7×100=80000+1000+300+0+7=8130781307_{10} = 8\times10^4 + 1\times10^3 + 3\times10^2 + 0\times10^1 + 7\times10^0 = 80000 + 1000 + 300 + 0 + 7 = 81307

수를 이진법으로 나타내면, kk번째 자리는 2k2^k의 배수를 나타낸다. 예를 들어,

100112=1×24+0×23+0×22+1×21+1×20=16+0+0+2+1=1910011_2 = 1\times2^4 + 0\times2^3 + 0\times2^2 + 1\times2^1 + 1\times2^0 = 16 + 0 + 0 + 2 + 1 = 19

Skew Binary(편향 이진법)에서 kk번째 자리는 2k+1−12^{k+1} - 1의 배수를 나타낸다. 각 자리에 올 수 있는 숫자는 00과 11뿐이지만, 값이 00이 아닌 자리들 중 가장 오른쪽 자리에는 예외적으로 22가 올 수 있다. 예를 들어,

10120skew=1×(25−1)+0×(24−1)+1×(23−1)+2×(22−1)+0×(21−1)=31+0+7+6+0=4410120_{\text{skew}} = 1\times(2^5-1) + 0\times(2^4-1) + 1\times(2^3-1) + 2\times(2^2-1) + 0\times(2^1-1) = 31 + 0 + 7 + 6 + 0 = 44

Skew Binary로 나타낸 처음 1010개의 수는 0,1,2,10,11,12,20,100,101,1020, 1, 2, 10, 11, 12, 20, 100, 101, 102이다. (Skew Binary는 최대 한 번의 자리 올림만으로 11을 더할 수 있어 일부 응용에서 유용하지만, 이 문제와는 관계가 없다.)

입력

입력은 한 줄 이상으로 이루어지며, 각 줄에는 정수 nn이 하나씩 주어진다. n=0n = 0이면 입력의 끝을 의미한다. 그 외의 경우 nn은 Skew Binary로 표현된 음이 아닌 정수이며, 그 십진수 값은 최대 231−1=21474836472^{31} - 1 = 2147483647이다.

출력

각 수에 대해, 대응하는 십진수 값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    10120
    200000000000000000000000000000
    10
    1000000000000000000000000000000
    11
    100
    11111000001110000101101102000
    0
    
    예상 출력
    44
    2147483646
    3
    2147483647
    4
    7
    1041110737