Placeholder

#3106

진법 변환 1초 64MB

문제

A진법 수 S를 입력 받아 B진법 수로 출력하는 프로그램을 작성하시오.

S에 사용되는 값은 0 \sim 9, A \sim Z이다.

(2 ≤ A, B ≤​ 36) ( 0≤​ S를 10진수로 바꾼수 ≤​ 2^{63}-1 )


입력

입력은 100100개 이하의 테스트 케이스가 행으로 구분하여 주어진다.

테스트 케이스의 끝에는 00이 주어진다. 

각 테스트 케이스에는 세 수 A,S,BA, S, B가 공백으로 구분되어 주어진다.


출력

각 테스트 케이스에 대하여 AA진법 수 SSBB진법 수로 변환한 결과를 행으로 구분하여 출력한다.


예제1

2 11010 8

2 10110 10
10 2543 16
16 ABC 8
0
32

22
9EF
5274

[ Horner's Method 

22진수 11011101을 자리수별 가중치를 주어 1010진수로 나타내면 아래와 같다. 

1101=024 +123 +122 +021 +11101 = 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 이므로 

     =(((02+1)2+1)2+0)2+1= (((0*2 + 1) * 2 + 1) * 2 + 0) * 2 + 1 과 같다. 


큰 수를 다룰 때는 정수 오버플로우 현상에 주의해야 하며, 언어별로 다음과 같은 6464비트 정수 자료형을 사용하는 것이 권장된다.

  • C, C++: long long (scanf/printf의 형식지정자로는 %lld 사용)

  • Java, Kotlin: long


출처

JUNGOL - comkiwer


역링크 공식 문제집만

로그인해야 코드를 작성할 수 있어요.