https://www.acmicpc.net/problem/11576
문제가 길지만 해야하는 건 간단하다.
1. A진법 수를 10진법으로 변환
2. 10진법 수를 B진법으로 변환
3. B진법 수 출력
A_to_ten 함수에서 A진법 수를 10진법으로 변환해서 반환하였다.
반환값은 변수 C에 저장하였다.
ten_to_B 함수는 재귀함수이다.
이 함수를 이용하여 10진법을 B진법으로 변환하여 출력하였다.
#include <stdio.h>
#include <math.h>
int A_to_ten(int A, int *num, int m) // A진법 - 10진법 변환
{
int result = 0;
for (int i = 0; i < m; i++)
result += num[i] * pow(A, m-i-1);
return result;
}
void ten_to_B(int C, int B) // 10진법 - B진법 변환
{
if (C != 0)
{
ten_to_B(C / B, B);
printf("%d ", C % B);
}
}
int main()
{
int A, B, C;
int m;
int num[25];
scanf("%d %d", &A, &B);
scanf("%d", &m);
for(int i = 0; i < m; i++) // 자리수의 개수 만큼 반복
scanf("%d", &num[i]);
C = A_to_ten(A, num, m);
ten_to_B(C, B);
return 0;
}