본문 바로가기
알고리즘

[C] 백준 11576

by mokhwasomssi 2022. 1. 7.

https://www.acmicpc.net/problem/11576

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의

www.acmicpc.net

 

문제가 길지만 해야하는 건 간단하다. 

 

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;
}