만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

K-균형 잡힌 수

시간 제한3초메모리 제한1024 MB

요약
X와 K가 주어질 때, X 이하의 수 중에서 가장 많이 쓰인 숫자와 가장 적게 쓰인 숫자의 개수 차이가 K 이하인 가장 큰 수를 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

우리가 주로 쓰는 10진법은 모든 수를 0부터 9까지의 숫자를 조합해 표기한다.

양의 정수 NN을 10진법으로 적을 때 쓴 숫자들을 본다. NN은 0으로 시작하지 않는다. 가장 많이 쓴 숫자의 등장 횟수에서 가장 적게 쓴 숫자의 등장 횟수를 뺀 값이 KK 이하이면 NN을 KK-균형 잡힌 수라고 한다.

양의 정수 XX와 KK가 주어질 때, XX보다 작거나 같은 가장 큰 KK-균형 잡힌 수를 구한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤105)(1 \leq T \leq 10^5)

둘째 줄부터 TT개의 줄에 양의 정수 XX와 KK가 공백으로 구분되어 주어진다. (1≤X<10105,1≤K≤105)(1 \leq X < 10^{10^5}, 1 \leq K \leq 10^5)

모든 테스트 케이스에서 XX의 길이의 합은 10510^5 이하이다.

출력

각 테스트 케이스의 정답을 입력 순서대로 한 줄에 하나씩 출력한다.

힌트

  • 입력과 출력은 64비트 정수 범위를 넘을 수 있다.
  • 사용하지 않은 숫자는 등장 횟수를 고려하지 않는다.
  • Python 사용자는 PyPy로 제출하는 것을 권장한다.

예제1

  1. 예제 1

    입력
    4
    10000 1
    10000 3
    112222 1
    32334837373633003033 3
    
    예상 출력
    9999
    10000
    112221
    32334837373488887422