BOJ 11576 Base Conversion

LONGNEW·2021년 2월 2일
0

BOJ

목록 보기
138/333

https://www.acmicpc.net/problem/11576
시간 2초, 메모리 256MB
input :

  • 미래세계 진법 A 정이 진법 B (2 <= A, B <= 30)
  • A진법으로 나타낸 숫자의 자리수의 개수 m(1 ≤ m ≤ 25)
  • A진법을 이루고 있는 숫자 m개가 공백을 구분으로 높은 자릿수부터 차례대로 주어진다.
  • 0이상 A미만 / 수가 0으로 시작하는 경우는 존재하지 않는다.

output :

  • A진법으로 나타낸 수를 B진법으로 변환하여 출력

진법변환 너무 귀찮음...

입력 받은 수들에 대해서


idx로 수들을 찾아오고, i로는 각 base의 제곱을 나타내서 곱해주면 우린 10진수로 이 수를 나타낼 수 있다.

그러면 인제 10진수를 m진수로 나타내야 한다.
m으로 나눈 나머지를 계속 기록하게 한 다음 target숫자가 0이되면 이 리스트를 뒤집어주면 m진법으로 이 수를 나타낼 수 있다.

import sys

n, m = map(int, sys.stdin.readline().split())
cnt = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
data = 0
idx = 0
for i in range(cnt - 1, -1, -1):
    data += num[idx] * (n ** i)
    idx += 1
    
ret = []
while data != 0:
    ret.append(data % m)
    data //= m
    
ret.reverse()
for item in ret:
    print(item, end=" ")

0개의 댓글