Study hard
(c++)백준 11005번: 진법 변환 2 본문
https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 ��
www.acmicpc.net
[풀이]
어떤 수를 2로 계속 나눠서 그 나머지들로 이진수를 얻는 것처럼 N을 B로 계속 나눠서 그 나머지를 저장하여 한꺼번에 출력하는 방법을 썼다. 가장 마지막에 저장된 나머지부터 출력되기 때문에 stack을 사용하였다.
출력할 때 11진법 이상이고, 나머지가 10이상이면 문제에 있는 대로 알파벳 대문자를 대신 출력하도록 해주었다.
#include <iostream>
#include <stack>
using namespace std;
int N, B;
void getNum() {
stack<int>s;
char x;
int d;
while (N != 0) {
d = N % B;
N = N / B;
s.push(d);
}
while (!s.empty()) {
//10을 넘어가는 진법이고 나머지가 10 이상일 때
if (B > 10 && s.top() >= 10) {
cout << char(s.top() + 55);
}
else
cout << s.top();
s.pop();
}
}
int main() {
cin >> N >> B;
getNum();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 1373번: 2진수 8진수 (0) | 2020.06.17 |
---|---|
(c++)백준 2745번: 진법 변환 (0) | 2020.06.17 |
(c++)백준 9613번: GCD 합 (0) | 2020.06.17 |
(c++)백준 2609번: 최대공약수와 최소공배수 (0) | 2020.06.15 |
(c++)백준 1168번: 요세푸스 문제 2 (0) | 2020.06.14 |