10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출처: https://ourcalc.com/2진수-변환기/
#include <iostream>
#include <stack>
using namespace std;
int main(){
int number, n;
stack<char> answer;
//입력
cin >> number >> n;
//진법 변환 구현
while(number > 0) {
//나머지가 10이상인 경우 스택에 알파벳 push(11진법 이상인 경우)
if(number%n >= 10) answer.push((char)('A'+number%n-10));
//나머지가 9이하인 경우 나머지인 숫자값 push(10진법 이하인 경우)
else answer.push((char)(number%n+'0'));
//숫자를 반내림으로 나누어 줌
number /= n;
}
//출력
while(!answer.empty()){
cout<<answer.top();
answer.pop();
}
}