Study hard
(c++)백준 11576번: Base Conversion 본문
https://www.acmicpc.net/problem/11576
[풀이]
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 |