티스토리 뷰

728x90

 

진법 변환

 

진법 변환 기본 코드

while(N>0){
	int D=N%B;
    if(D<10) ans+=D;
    else{
    	ans+=(char)(D-10+'A');
    }
	N=N/B;
}

 

int로 문자 출력하는 법

ex) 0 -> 'A', 1 -> 'B'

//아스키 코드 이용
(char) (변수)+'A'

BOJ 11005 코드

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
    int n, b;
    vector<int> vec;
    char c[36];

    cin>>n>>b;

    //숫자+문자열
    for (int i = 0; i < 10; i++)
    {
        c[i] = '0' + i;
    }

    int j=0;
    
    //얼마에서 해야하는지 
    while(n>pow(b,j)){
        j++;
    }
    
    //10이 넘어갈 경우 문자열 추가
    for (int i = 0; i < 26; i++)
    {
        c[i + 10] = 'A' + i;
    }

	//본격적인 진법 변환
    for (int i = j; i >= 0; i--)
    {
        if (n - pow(b,i) >= 0)
        {
            vec.push_back((int)(n / pow(b,i)));
            n = n % (int)pow(b,i);
        }else{
            vec.push_back(0);
        }
    }
    
    bool sig=false;

    for (int i = 0; i < vec.size(); i++)
    {
    	//맨 앞이 0이 출력되면 안되기 때문에 signal로 처리
        if (vec[i]!=0 || sig==true)
        {
            cout<<c[vec[i]];
            sig=true;
        }
            
    }
}

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함