https://www.acmicpc.net/problem/11576
문제
입력에 a, b (2<=a, b<=30)를 입력받고 a진법으로 나타낸 수를 m자리수 만큼 입력받는다. 이 수를 b진법으로 변환하여 출력한다.
풀이
a->b진법으로 바로 가면 헷갈리므로 total 변수에 10진법으로 변환한 수를 저장한다. 이후 total에 가까운 b^x부터 나눠가며 그 몫을 출력한다. 마지막에 놓치는 값이 없는지 확인해주어야 한다.
#include <iostream>
#include <vector>
using namespace std;
long long a, b, m, arr[30], idx = 1, total = 0;
vector<int>v;
int main() {
cin >> a >> b;
cin >> m;
for (int i = 0; i < m; i++) {
cin >> arr[i];
}
for (int i = 0; i < m; i++) {
total += arr[m-1-i] * idx;
idx *= a;
}
long long tmp = 1;
while (tmp <= total) tmp *= b;
tmp /= b;
while (tmp!=1) {
v.push_back(total / tmp);
total %= tmp;
tmp /= b;
}
v.push_back(total / tmp);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';
}
}
'Koala - 14기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] IF문 좀 대신 써줘 (0) | 2024.04.07 |
---|---|
[백준/python3] 2243번 : 사탕상자 (0) | 2024.04.07 |
[백준/Python3] 11659번 : 구간 합 구하기4 (0) | 2024.04.06 |
[백준/Python3] 2003번: 수들의 합 (0) | 2024.04.01 |
[백준/C++] 3190번 뱀 (0) | 2024.04.01 |