728x90
▶ 백준 11576
- A, B의 2가지 진법을 첫째줄에서 입력받음.
- 2번째 줄에서 A진법으로 나타낼 숫자 자리수 받음.
- 마지막줄에서 각 자리수의 수 받음(ex. 17진법으로 나타낸 수 : 두번째 자리 수 =2, 첫번째 자리수 16)
->위의 숫자를 10진법으로 바꾸면 2*(17)^1 + 16*(17)^0 = 50임.
▶ 풀이방법
- A진법 -> 10진법으로 변환 -> B진법으로 변환
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<String> stack = new Stack<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for(int i = 0; i < m; i++) {
stack.push(st.nextToken());
}
int sum = 0;
for(int i = 0; i < m; i++) {
int num = Integer.parseInt(stack.pop());
for(int j = 0; j < i; j++) {
num *= a;
}
sum += num;
}
while(sum > 0) {
stack.push(String.valueOf(sum%b));
sum /= b;
}
while(!stack.isEmpty()) bw.write(stack.pop() + " ");
bw.flush();
bw.close();
br.close();
}
}
728x90