https://www.acmicpc.net/problem/11005
10진법 수 N을 B진법으로 바꾸는 문제이다.
B의 범위는 2 ≤ B ≤ 36이다.
만약에 314라는 10진수의 각 자리수를 파싱한다면
314 % 10 = 4 (출력)
314 / 10 = 31
31 % 10 = 1 (출력)
31 / 10 = 3
3 (출력)
나머지 연산과 나눗셈을 반복함으로써 각 자리수를 나눌수 있다.
나누는 수는 그 수의 진법이다. (10진법이므로 10을 나누었다)
다른 진법에서도 똑같은 원리로 각 자리수를 구할 수 있다.
연산의 반복은 재귀함수를 이용하였다.
#include <stdio.h>
void convert(int N, int B)
{
if (N != 0)
{
convert(N / B, B);
if (N % B > 9 && B > 10)
printf("%c", 'A' + N % B - 10);
else
printf("%d", N % B);
}
}
int main()
{
int N;
int B;
scanf("%d", &N);
scanf("%d", &B);
convert(N, B);
return 0;
}