파이썬 int()
를 이용하면 매우 쉽게 풀 수 있었던 문제.
int(i,j)
는 i라는 값을 j진수로 변환해준다.
문제를 잘 읽어보면 자리수가 0부터 z이하, 즉 0부터 35까지를 표현할 수 있다고 하는데 결국 36진수까지 표현하고 있다는 것을 알 수 있다.
ex) 0~9 -> 10진수, 0~1 -> 2진수, 0~35-> 36진수
그러면 A를 2부터 36까지 돌면서 진수로 표현할 수 있는 값을 가지고 B를 비교한다.
끝!
# 0. 입력받기
import sys
input = sys.stdin.readline
A, B = input().split()
x, a, b = 0, 0, 0 # 출력할 값
count = 0 # 조건에 맞는 값이 몇개인지 카운팅해주는 변수
# 1. A를 가지고 2부터 36진수 중 표현이 가능한 값을 찾음
for i in range(2, 37):
try:
a_temp = int(A, i)
except:
continue
# 2. B를 가지고 2부터 36진수 중 표현이 가능한 값을 찾음
for j in range(2, 37):
try:
b_temp = int(B, j)
# 3. 진수 변환한 값들이 같을 떄
if a_temp == b_temp:
count += 1
x = a_temp
a = i
b = j
except:
continue
# 4. 출력하기
if count == 1:
print(x,a,b)
elif count == 0:
print("Impossible")
else:
print("Multiple")