코테 & 알고리즘
[코테/C++] n진법 변환
왈왈디
2023. 7. 25. 13:10
728x90
문제에서 10진수를 n진법 수로 변환하라고 하는 경우가 있다.
아래는 10진수 n = 100을 2진수로 변환하는 코드이다.
n에는 변환하고자 하는 10진수 수를,
b자리에는 몇 진법으로 변환할 지 숫자를 넣으면 된다.
n의 값이 1만큼 작아질 때까지
n을 b로 나눈 나머지 값을 배열에 저장하고,
n을 b로 나눈 몫으로 갱신한다.
마지막 몫이 1이라면 그 값을 배열에 넣는다.
배열을 뒤집고, 각 값을 연속으로 출력하면 n진법 변환이 완성된다.
다만, 16진법은 알파벳을 사용하기에
그 부분을 적용하기 위해서는 10이상의 값은 알파벳으로 변환하는 과정이 필요하다.
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main(){
int n = 100;
int b = 2;
while(n > 1){
v.push_back(n % b);
n /= b;
}
if(n == 1) v.push_back(1);
reverse(v.begin(), v.end());
for(int a : v){
if(a >= 10) cout << char(a + 55);
else cout << a;
}
return 0;
}
728x90