본문 바로가기

C++/공부 정리

진법 전환(진수 to 진수)

10진수에서의 n진수로 전환은 아래와 같이 진행할 수 있다.

#include <iostream>
using namespace std;
int main() {
    int N, j, index = 0;
    int jin[100] = {0,};
    cin >> N >> j;
    while(1){
        if(N < j){
            jin[index] = N;
            break;
        }
        jin[index++] = N % j;
        N /= j;
    }
    for(int i=index; i>=0; i++){
        cout << jin[i];
    }
    return 0;
}

 

좀 더 본격적으로 하면 진수와 진수간의 전환은

n진수를 10진수로 변환하고 해당 10진수를 m진수로 변환하면 된다.

#include <iostream>
using namespace std;
int main() {
    string n;
    int a, b, num10 = 0;
    cin >> a >> b;
    cin >> n;
    //10진수 변환
    for(int i=0; n.length(); i++){
        num10 = num10 * a + (n[i] - '0');
    }

    // 다시 b진수로 변환
    int jin[100] = {0, }, index = 0;
    while(1){
        if(num10 < b){
            jin[index] = num10;
            break;
        }
        jin[index++] = num10 % b;
        num10 /= b;
    }

    for(int i = index; i>= 0; i--){
        cout << jin[i];
    }
    return 0;
}

 

'C++ > 공부 정리' 카테고리의 다른 글

연속 부분 수열  (0) 2023.07.09
겹치는 지점 구하기  (0) 2023.07.03
날짜와 시간 차이 계산하기  (0) 2023.07.03
소수점 표현하기(반올림)  (0) 2023.07.01
dp 연습  (0) 2022.05.25