기초 PS #boj 11005

0ne·2024년 1월 31일

Algorithm

목록 보기
8/22

문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

출력

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

풀이

#include <iostream>
#include <vector>
using namespace std;

#define FASTIO cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);

char toB(int a) {
    if (a < 10) {
        return '0' + a;
    } else {
        return 'A' + (a - 10);
    }
}

int main() {
	FASTIO;	
    int num, B; cin >> num >> B;
    vector<int> v;
    while(num > 0) {
        v.push_back(num % B);
        num /= B;
    }
    
    if (v.empty()) {
        cout << "0";
    } else {
        for (int i = v.size() - 1; i >= 0; --i) {
            cout << toB(v[i]);
        }
    }
    return 0;
}
profile
@Hanyang univ(seoul). CSE

0개의 댓글