BOJ 13809 Champernowne Constant

BOJ 13809 Champernowne Constant

문제 링크:

문제 내용

Champernowne의 상수는 0. 뒤에 1부터 순서대로 모든 정수를 이어붙여서 얻을 수 있는 상수입니다.

양의 정수 NNKK가 주어질 때, Champernowne의 상수의 소수점 이하 NN번째 자리부터 연속 KK개의 자리를 출력하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 0 0으로 종료됩니다.

각 테스트 케이스는 한 줄에 NNKK의 순서로 주어집니다. (1N1091 \le N \le 10^9, 1K1001 \le K \le 100)

출력

각 테스트 케이스에 대해 문제의 정답을 출력합니다.

문제 풀이

스포일러

먼저 소수점 이하 NN번째 자리가 몇 자리 수인지 구합니다. 이는 kk자리 수가 10k10k110^k - 10^{k-1}개 존재함을 이용하여 NN이 양수가 아니게 될 때까지 k=1,2,k = 1, 2, \cdots에 대해 이 값을 순서대로 빼 보는 것으로 확인할 수 있습니다.

kk자리 수로만 이루어진 구간에서 NN'번째 자리가 어느 수인지는 그 값을 kk로 나누어서 확인할 수 있습니다. 그 다음에는 그 수의 적절한 자리 위치에서부터 시작하여 KK자리가 채워질 때까지 다음 수를 문자열에 추가하여 길이 KK만큼을 출력하면 됩니다.

Last updated on