cpp) 백준 11005: 진법 변환 2
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 11005: 진법 변환 2

by NEWSUN* 2023. 6. 8.

Problem

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

10진법 수 N이 주어질 때, 이 수를 B진법으로 바꿔서 출력하시오. (A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35)

 

Solution

#include<iostream>
#include<string>
#include<cmath>

using namespace std;

int main(){

    int N;          // 10진법 수
    int B;          // B진법 
    
    cin >> N >> B;

    int tmp;
    int num1 = N;   // 몫
    int num2;       // 나머지
    string result;  // 반환값 

    while(num1>0){
        tmp = num1/B;
        num2 = num1%B; // 불필요하게 num1이 1번 더 나눠지는 것 방지
        num1 = tmp;
 
        if(num2>=0 && num2<=9){
            result += (num2+'0');
        } else {
            result += (num2-10+'A');
        }
    }

    for(int i=result.length()-1;i>=0;i--){
        cout << result[i];
    }
    cout << endl;

    return 0;
}