[C++]Base Conversion - 백준11576

문제



풀이

문제 해석을 하자면,

  • A진법 -> B진법으로 변환하는 문제

풀이

  • A진법에서 바로 B진법으로 가는건 해보진 않았지만,
  • A진법-> 10진법과 10진법 -> B진법 가보는건 이미 경험했던 문제들이다.
    • ‘진법 변환’, ‘진법 변환 2’ 풀이 게시글 참고
  • 따라서 A진법->10진법->B진법 으로 가게 작성해보겠다.



코드

#include <iostream>
#include <stack>
#include <math.h>
using namespace std;

int A, B, m;
int i, j, k;
int inputArr[25]; // 양의 정수이며 2^20 미만(0도 생각)

long long calTemp, result;
stack <long long> st;

int main() {
	// input
	cin >> A >> B >> m;
	for (i = 0; i < m; i++)cin >> inputArr[i];

	// run
	// A->10
	for (i = m-1; i >= 0; i--) {
		calTemp += inputArr[i] * pow(A, j++);
	}
	// 10->B
	while (calTemp!=0) {
		result = calTemp% B;
		st.push(result);
		calTemp /= B;
	}

	// output
	while (!st.empty()) {
		cout << st.top() << ' ';
		st.pop();
	}

	return 0;
}



느낀점

A진법 -> 10진법 -> B진법 변환하는 방법만 알고있으면 풀 수 있는 문제이다.

댓글남기기