Study hard
(c++)백준 11576번: Base Conversion 본문
https://www.acmicpc.net/problem/11576
11576번: Base Conversion
타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의
www.acmicpc.net
[풀이]
A진법을 십진수로 변환하고, 변환한 십진수를 다시 B진법으로 변환하면 된다.
A진법을 십진수로 변환하는 방법은 A진수의 각 자릿수만큼 (A^(자릿수)) * (그 자리에 해당하는 값)을 해주면 되고,
십진수를 B진법으로 변환하는 것은 십진수를 0이 될때까지 B로 계속 나누면서 그 나머지를 저장해두면 된다.
#include <iostream>
#include <stack>
#include <cmath>//pow
using namespace std;
int A, B, m;
int Dex = 0;
stack<int>Anum;
stack<int>Bnum;
//A진법 십진수로 변환
void getDex() {
int p = 0;
while (!Anum.empty()) {
int cur = Anum.top();
Dex += pow(A, p)*cur;
Anum.pop();
p++;
}
}
//십진수 B진법으로 변환
void getBnum() {
while (Dex != 0) {
int num = Dex % B;
Dex = Dex / B;
Bnum.push(num);
}
}
void solution() {
cin >> A >> B >> m;
for (int i = 0; i < m; i++) {
int n;
cin >> n;
Anum.push(n);
}
getDex();
getBnum();
while (!Bnum.empty()) {
cout << Bnum.top() << ' ';
Bnum.pop();
}
cout << endl;
}
int main() {
solution();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 6588번: 골드바흐의 추측 (0) | 2020.06.18 |
---|---|
(c++)백준 1929번: 소수 구하기 (0) | 2020.06.18 |
(c++)백준 2089번: -2진수 (0) | 2020.06.17 |
(c++)백준 1212번: 8진수 2진수 (0) | 2020.06.17 |
(c++)백준 1373번: 2진수 8진수 (0) | 2020.06.17 |