메모리: 113112 KB, 시간: 120 ms
구현, 문자열, 수학
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
a,b = input().split()
## 36진법 변환 가장 쉬운방법
# print(int(a, int(b)))
## 좀 어렵지만 이론적인 방법
num_list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a = a[::-1]
b = int(b)
answer = 0
for index, num in enumerate(a):
answer += (num_list.index(num)*(b**index))
print(answer)
메모리: 113112 KB, 시간: 116 ms
구현, 수학
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
a,b = map(int,input().split())
## 좀 어렵지만 이론적인 방법
## a가 0이 될떄까지 b로 나눠준다
## a/b로 나눴을때 나오는 나머지가 알파벳이다
## 진법계산을 반대로했으므로 마지막에 역순으로 출력해주는 작업이 필요하다.
num_list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s = ""
while a:
s += str(num_list[a%b])
a //= b
11
print(s[::-1])