문제 : boj1576
우선 A진법의 수를 10진법으로 만들고, 10진법을 B진법으로 만들면 된다.
A에서 10진법을 만드는것은 예를들어 각 자리수가 ..., c2, c1, c0 이고 현재 a진법의 수라면
... + c2*a^2 + c1*a^1 + c0*a^0 을 해주면 된다.
그럼 그렇게 만들어진 10진법 수를 나누기와 나머지연산을 사용해 B진법으로 만들어주면 되긴한데, 자바의 경우 Integer.toString에서 해당 기능을 지원해주므로 그렇게 처리했다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
int num = 0;
int tmp = 1;
for (int i = 0; i < m-1; i++) tmp *= a;
st = new StringTokenizer(br.readLine());
while (m-->0) {
int cur = Integer.parseInt(st.nextToken());
num += tmp*cur;
tmp/=a;
}
String res = Integer.toString(num, b);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < res.length(); i++) {
char c = res.charAt(i);
sb.append(c>'9'?c-'a'+10:c-'0').append(' ');
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 1388 - 바닥 장식 (boj java) (0) | 2022.05.04 |
---|---|
[자바] 백준 2246 - 콘도 선정 (boj java) (0) | 2022.05.03 |
[자바] 백준 22935 - 이진 딸기 (boj java) (0) | 2022.05.01 |
[자바] 백준 8244 - Tales of seafaring (boj java) (0) | 2022.04.30 |
[자바] 백준 13222 - Matches (boj java) (0) | 2022.04.29 |
댓글