만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

이건 무슨 진법이지?

면접 대비

시간 제한2초메모리 제한512 MB

요약
각 숫자 문자열을 8진수, 10진수, 16진수로 읽은 값을 출력한다. 8이나 9가 들어 있으면 8진수 값 자리에 0을 출력한다.
난이도

쉬움10점 중 3점

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

문제

C, C++, Java 같은 프로그래밍 언어는 여러 진법의 상수를 쓸 수 있도록 접두 문자(prefix character)라는 규칙을 둔다.

8진법으로 적은 수 앞에는 숫자 0을, 16진법으로 적은 수 앞에는 0x를 붙이고, 10진법에는 아무것도 붙이지 않는다. 10진수 4660을 이 규칙대로 적으면 다음과 같다.

  • 8진법: 011064
  • 10진법: 4660
  • 16진법: 0x1234

접두 문자가 없으면 컴파일러는 그 수가 몇 진법인지 알 방법이 없다. 0x1234에서 0x가 빠지면, 사람은 16진수로 적었어도 컴파일러는 8진수나 10진수로 읽을 수 있다.

이런 상황을 가정하고, 0부터 9까지의 숫자로만 이루어진 문자열을 각각 8진수, 10진수, 16진수로 읽는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 데이터의 개수 T(1 ≤ T ≤ 10000)가 주어진다.

다음 T개의 줄에는 각각 테스트 데이터의 번호를 나타내는 정수 K와 문자열이 공백으로 구분되어 주어진다. 문자열은 0부터 9까지의 숫자로만 이루어지고, 길이는 1 이상 7 이하이며, 0으로 시작할 수 있다.

출력

각 테스트 데이터마다 한 줄에 번호 K와, 문자열을 8진수, 10진수, 16진수로 읽은 값을 이 순서대로 공백으로 구분해 출력한다. 세 값은 모두 10진수로 적는다.

문자열에 8이나 9가 들어 있으면 8진수로 읽을 수 없으므로, 8진수 자리에 0을 출력한다.

예제7

  1. 예제 1

    입력
    4
    1 1234
    2 9
    3 1777
    4 129
    
    예상 출력
    1 668 1234 4660
    2 0 9 9
    3 1023 1777 6007
    4 0 129 297
    
  2. 예제 2

    입력
    1
    1 0
    
    예상 출력
    1 0 0 0
    
  3. 예제 3

    입력
    10
    1 0
    2 1
    3 2
    4 3
    5 4
    6 5
    7 6
    8 7
    9 8
    10 9
    
    예상 출력
    1 0 0 0
    2 1 1 1
    3 2 2 2
    4 3 3 3
    5 4 4 4
    6 5 5 5
    7 6 6 6
    8 7 7 7
    9 0 8 8
    10 0 9 9
    
  4. 예제 4

    입력
    3
    1 0000000
    2 0000001
    3 0000010
    
    예상 출력
    1 0 0 0
    2 1 1 1
    3 8 10 16
    
  5. 예제 5

    입력
    4
    1 0011064
    2 0011065
    3 0000129
    4 0007777
    
    예상 출력
    1 4660 11064 69732
    2 4661 11065 69733
    3 0 129 297
    4 4095 7777 30583
    
  6. 예제 6

    입력
    3
    1 7777777
    2 9999999
    3 1000000
    
    예상 출력
    1 2097151 7777777 125269879
    2 0 9999999 161061273
    3 262144 1000000 16777216
    
  7. 예제 7

    입력
    5
    1 80
    2 08
    3 88888
    4 70707
    5 77777
    
    예상 출력
    1 0 80 128
    2 0 8 8
    3 0 88888 559240
    4 29127 70707 460551
    5 32767 77777 489335