가까운 문자열
시간 제한1초메모리 제한1024 MB
숫자 문자열 s와 정수 k가 주어질 때, 길이가 같은 모든 숫자 문자열을 s와의 자릿수 거리가 작은 순서, 같으면 사전순으로 나열한 목록에서 k번째 문자열을 구합니다.
문제
오늘 문자열론 수업에서 모리스 교수는 두 문자열 사이의 거리를 구하는 여러 방법을 학생들에게 설명했다. 그중 한 방법은 다음과 같다. 길이가 이고 십진수 숫자로만 이루어진 두 문자열 와 가 있다. 모리스 교수는 같은 위치에 있는 숫자 차이의 절댓값을 모두 더한 값을 두 문자열의 숫자 거리라고 부른다. 즉 이며, 여기서 는 의 번째 위치에 적힌 숫자이고 는 의 번째 위치에 적힌 숫자이다.
숙제로 교수는 학생마다 길이 의 문자열을 하나씩 주고, 길이 인 모든 문자열(개)을 주어진 문자열과의 숫자 거리가 작은 순서대로 적으라고 했다. 거리가 같은 두 문자열은 사전순으로 비교한다.
교수는 시간이 부족해서 각 학생의 작업을 일일이 확인하지 못한다. 그래서 학생마다 정수 를 알려 주고, 목록의 번째에 놓인 문자열만 말해 달라고 한다. 학생들은 이 길고 지루한 작업을 손으로 하기 싫어해서, 주어진 문자열과 를 입력받아 답을 출력하는 프로그램을 작성해 달라고 부탁했다.
입력
첫째 줄에 두 정수 과 (, )가 주어진다. 각각 교수가 준 문자열의 길이와, 교수가 관심 있는 최종 목록에서의 위치이다.
둘째 줄에는 십진수 숫자 개로 이루어진 문자열이 주어진다.
출력
목록의 번째에 적힌, 길이 의 십진수 숫자 문자열을 출력한다.
힌트
두 번째 예제에서 목록의 처음 일곱 단어는 00000, 00001, 00010, 00100, 01000, 10000, 00002이다.
단어 가 단어 보다 사전순으로 크지 않다는 것은 다음 두 조건 중 하나가 성립한다는 뜻이다.
- 이고 이다. 즉 첫 단어가 둘째 단어의 접두사이다.
- 어떤 위치 에 대해 이고 이다. 즉 처음으로 다른 위치에서 첫 단어의 글자가 더 작다.