https://www.acmicpc.net/problem/11005
문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
예제 입력 1 복사
60466175 36
예제 출력 1 복사
ZZZZZ
N진법 구현하는 문제
케이스가 10억까지 돌아서 채점은 매우 오래 걸렸지만 구현 자체는 멱수 구하는 방법이랑 똑같았다
public class Main {
public static String solution(int a, int b) {
String res = "";
StringBuilder sb = new StringBuilder(res);
while (a > 0){
int tmp = a % b;
a /= b;
if (tmp < 10) sb.append(tmp);
else sb.append((char)('A' + tmp - 10));
}
return sb.reverse().toString();
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
System.out.println(solution(a,b));
}
}