https://codeforces.com/blog/entry/114788
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int32_t num_tests;
std::cin >> num_tests;
for(int32_t t = 0; t < num_tests; t++) {
int64_t k;
std::cin >> k;
std::vector<int32_t> digits;
while(k > 0) {
digits.push_back(k % 9);
k /= 9;
}
std::reverse(digits.begin(), digits.end());
for(int32_t i = 0; i < digits.size(); i++)
std::cout << (char)(digits[i] < 4 ? (digits[i] + '0') : (digits[i] + '1'));
std::cout << "\n";
}
return 0;
}
※.digit에 올 수 있는 수는 0~9, 9가지이다.(4를 제외)
( 9876543210 -> [9][8][7][6][5][4][3][2][1][0] 4는 올수없음)
※. k % 9 연산은 digit에 오는 수를 정하는 연산이고
k / 9 연산은 위의 작업을 하는 횟수이다.( = 자리수)
(k = 9일 때, k % 9 연산은 일의 자리에 오는 수를 정하는 연산 -> 0,
k / 9 연산은 다음 자리에 k % 9 를 하기 위한 연산 -> 십의 자리 -> (k / 9) % 9 -> 1 == [1] [0] )
※. digit에 올 수 있는 수는 0~9, 10가지이다.(4를 제외하지 않았을 때)
n의 각 자리수의 숫자를 정하는 방법은
현재 자리수에 0~9, 10가지 숫자중 하나를 정하고
다음 자리수를 구하기 위해 n/10을 한다.
그러나 digit에 올수 있는 수는 0~9 (4제외) 9가지이다.
n의 각 자리수의 숫자를 정하는 방법은
현재 자리수에 0~9(4제외) 9가지 숫자중 하나를 정하고
다음 자리수를 구하기 위해 n/9를 한다.
※. k/9 연산을 할수록 자리수는 커진다.
string으로 출력할 때 자리수가 큰 숫자부터 더해야 하므로 stack으로 각 자리수를 저장해준다.
※. 각 자리수가 4 미만인 경우는 그대로 출력
4 이상인 경우는 + 1을 추가해줘야한다.
(4 -> 5, 5 -> 6, 8 -> 9)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while(T --> 0) {
long k = Long.parseLong(br.readLine());
Stack<Integer> stk = new Stack<>();
while(k > 0) {
long a = k % 9;
stk.push((int)a);
k /= 9;
}
while(!stk.isEmpty()) {
int temp = stk.pop();
char a = (temp < 4) ? (char)(temp+'0') : (char)(temp+'1');
sb.append(a);
}
sb.append('\n');
}
System.out.println(sb);
}
}
'코드포스' 카테고리의 다른 글
[Educational Codeforces Round 149 (Rated for Div. 2)] C. Best Binary String (0) | 2023.06.02 |
---|---|
[Educational Codeforces Round 149 (Rated for Div. 2)] B. Comparison String (0) | 2023.06.01 |
[Codeforces Round 849 (Div. 4)] D. Distinct Split (0) | 2023.03.13 |
[Hello 2023] D. Boris and His Amazing Haircut (0) | 2023.01.19 |
[Codeforces Round #842 (Div. 2)] D. Lucky Permutation (0) | 2023.01.08 |