
아주 복잡하게 푼 방식 => 시간초과
#include <bits/stdc++.h>
using namespace std;
string solution(int n, int b) {
// 자리 수 찾기
int k = 0;
int totalCount = 0;
while (true) {
totalCount += (b - 1)*pow(b, k);
if (totalCount >= n)
break;
else
k++;
}
string s = "";
while (k >= 0) {
bool flag = false;
for (int i = (b - 1); i > 0; i--) {
int temp = i * pow(b, k);
if (n >= temp) {
if (i <= 9)
s += i + '0';
else if (i > 9)
s += (i - 10) + 'A';
flag = true;
n -= temp;
break;
}
}
if (!flag)
s += '0';
k--;
}
return s;
}
int main() {
int n, b;
cin >> n >> b;
string res = solution(n, b);
cout << res << '\n';
}
#include <bits/stdc++.h>
using namespace std;
string solution(int n, int b) {
vector<int> arr;
while (true) {
if (n == 0) // **************
break; // 뒷자리부터 처리!
arr.push_back(n%b); // (1) modulo
n /= b; // (2) divide
} // **************
// 벡터에 뒤쪽부터 담김.
string result = "";
for (int i = arr.size() - 1; i >= 0; i--) {
int temp = arr[i];
if (temp < 10) {
result += temp + '0';
}
else {
result += (temp - 10) + 'A';
}
}
return result;
}
int main() {
int n, b;
cin >> n >> b;
string result = solution(n, b);
cout << result << '\n';
}
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int b;
cin >> b;
string result = "";
while (true) {
int res = n % b;
n /= b;
if (res < 10) {
result = char('0' + res) + result;
}
else { // res >= 10
res -= 10;
result = char('A' + res) + result;
}
if (n == 0)
break;
}
cout << result << endl;
}