문제
폰 호석만은 진법 변환의 달인이다. 어떤 진법의 수가 주어져도 모든 다른 진법으로의 변환이 가능한 폰 호석만은 새로운 문제를 내기로 했다. 폰 호석만이 내는 문제는 다음과 같이 진행된다.
먼저 폰 호석만은 수 3개 X, A, B를 결정한다(0 ≤ X < 263, 2 ≤ A ≤ 36, 2 ≤ B ≤ 36, A ≠ B). 이 때 X는 10진법이다. 그 다음에 X를 A진법으로 표현한 수와 B진법으로 표현한 수를 종이에 써 놓는다.
그 다음에 종이에 써져 있는 두 개의 수를 여러분에게 보여주게 된다. 주어진 두 개의 수를 통해 원래 숫자인 X, A, B를 계산해주자. 만약 조건을 만족하는 (X, A, B)로 가능한 조합이 여러 개라면 "Multiple"을 출력하고, 가능한 조합이 없다면 "Impossible"를 출력한다.
입력
첫번째 줄에 X를 A진법으로 표현한 값과 X를 B진법으로 표현한 값이 공백으로 구분되어 주어진다. 각 자리수는 0 이상 z 이하이다. a부터 z 는 10부터 35 를 의미한다.
단, 0을 제외한 각 수는 0 으로 시작하지 않으며, 길이는 최대 70 이다.
출력
만약 문제의 조건에 맞는 X, A, B가 유일하게 존재한다면, X를 십진법으로 표현한 수와 A와 B를 공백으로 나누어 출력하라. 만약 만족하는 경우가 2가지 이상이라면 "Multiple"을, 없다면 "Impossible"을 출력하라.
제한
- 0 ≤ X < 263
- 2 ≤ A ≤ 36
- 2 ≤ B ≤ 36
- A ≠ B
- X는 0 혹은 양의 정수, A와 B는 양의 정수이다.
예제 입력 1 복사
ep jh
예제 출력 1 복사
473 32 24
예제 입력 2 복사
z z
예제 출력 2 복사
Impossible
예제 입력 3 복사
0 0
예제 출력 3 복사
Multiple
예제 입력 4 복사
2222222222222222222222222222222222222222222222222222222222222222222222 8888888888888888888888888888888
예제 출력 4 복사
Impossible
[소스 코드]
정답은 정답인데 노란 글씨 정답이 나왔다. 테스트 케이스 전부를 맞추진 못하고 일부만 맞췄을 때는 노란 글씨가 뜬다고 한다. 한 번 더 풀어봐야 할 문제인 것 같다.
a,b = map(str, input().split()) #a진법 데이터,b진법 데이터
result = [0,0]
count = 0 #방법의 개수
num = dict()
for i in range(0,10): #1부터 9
num[str(i)] = i
for i in range(26): #a부터 z까지
num[chr(97+i)] = i + 10
#num -> num['1'] = 1, num['2'] = 2, ...num['a'] = 10....
max_a = max(list(a)) #n진법 수에는 n보다 작은 수만 표시되기에 a와 b에서 제일 큰 값을 저장
max_b = max(list(b))
def n_notation(string, n): #n진수인 string을 10진수로 변환하는 함수
tmp = 0
for i in range(len(string)):
tmp += (((int(n))**i)*num[string[-1-i]]) #n진수 string에서 작은자리부터 곱해줌
# jk라고 했을 때 k*n^0 + j*n^1
return tmp
for i in range(num[max_a]+1, 37):
for j in range(num[max_b]+1, 37):
if i == j:
continue
if n_notation(a, i) == n_notation(b,j):
if n_notation(a,i)>=2**63:
continue
result[0] = i
result[1] = j
count += 1
if count == 0:
print("Impossible")
elif count > 1:
print("Multiple")
elif count == 1:
print(n_notation(a, result[0]), result[0], result[1])
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1747 소수&팰린드롬 (0) | 2022.02.25 |
---|---|
[python/파이썬] 백준 21919 소수 최소 공배수 (0) | 2022.02.25 |
[python/파이썬] 백준 9613 GCD 합 (0) | 2022.02.23 |
[python/파이썬] 백준 21920 서로소 평균 (0) | 2022.02.22 |
[python/파이썬] 백준 4134 다음 소수 (0) | 2022.02.22 |