아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

부분 수열로 만드는 최대 수

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

요약
N의 자릿수를 순서대로 골라 앞에 0이 오지 않으면서 Q로 나눈 나머지가 R인 가장 큰 수를 구합니다.
난이도

보통10점 중 6점

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

문제

세 수 NN, QQ, RR이 주어진다. 다음 조건을 모두 만족하는 MM을 구해야 한다.

  • MM은 양의 정수다.
  • MM을 십진법으로 쓴 문자열이 NN을 십진법으로 쓴 문자열의 부분 수열이다. 즉 NN의 자릿수 중 0개 이상을 지워서 MM을 만들 수 있다.
  • MM을 QQ로 나눈 나머지가 RR이다.
  • MM은 조건을 만족하는 값 중 가장 크다.

십진법 표기는 0으로 시작하지 않으므로, 남긴 첫 자리가 0이면 안 된다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다 (1≤T≤2001 \le T \le 200). 다음 TT개 줄에 테스트 케이스가 한 줄에 하나씩 주어진다.

각 줄에는 공백 하나로 구분한 세 정수 NN, RR, QQ가 이 순서로 주어진다 (1≤N<1010001 \le N < 10^{1000}, 0≤R<Q≤10000 \le R < Q \le 1000). 입력에 나오는 수는 모두 앞에 0이 붙지 않는다.

출력

각 테스트 케이스마다 문제에서 설명한 MM을 앞에 0을 붙이지 않고 한 줄에 출력한다. 조건을 만족하는 MM이 없으면 대신 Not found를 한 줄에 출력한다.

힌트

N=840N = 840, R=0R = 0, Q=8Q = 8인 경우, 840840이 88의 배수이므로 MM의 최댓값은 840840이다.

N=901N = 901, R=3R = 3, Q=8Q = 8인 경우, 901901에서 만들 수 있는 부분 수열은 99, 00, 11, 9090, 0101, 9191, 901901이다. 이 중 00은 양수가 아니고 0101은 앞에 0이 붙어서 빠진다. 남은 값 중 88로 나눈 나머지가 33인 것은 9191뿐이다.

N=123456789N = 123456789, R=10R = 10, Q=100Q = 100인 경우, 100100으로 나눈 나머지가 1010인 부분 수열이 없다.

예제1

  1. 예제 1

    입력
    3
    840 0 8
    901 3 8
    123456789 10 100
    
    예상 출력
    840
    91
    Not found