코드 복원하기
시간 제한1초메모리 제한1024 MB
길이 L인 모든 연속 부분 문자열의 해시가 주어질 때 길이 N인 숫자 비밀번호를 복원하고, 가능한 답 중 사전순으로 가장 앞선 것을 출력한다.
문제
달구의 프로그램은 에서 까지의 숫자로만 이루어진 코드를 비밀번호로 이용한다. 사용자의 보안을 위해, 달구의 프로그램은 길이 의 비밀번호 에 대해 로 해싱하여 만든 수열 , , , 을 파일에 저장한다.
이때, 은 의 번째 숫자 부터 번째 숫자까지를 이어 붙인 문자열이며, 어떤 숫자로만 이루어진 문자열 에 대한 해시 함수 는 다음과 같다.
는 의 번째 문자이다. 문자 0, 1, 2, , 9는 각각 정수 , , , , 로 대응된다.
모든 수열과 문자열의 인덱스는 부터 시작한다.
이 방식이 안전하다고 생각하는 달구를 위해 코드를 복원해보자.
입력
첫째 줄에 정수 과 이 공백으로 구분되어 주어진다. (; )
둘째 줄에 수열 , , , 이 공백으로 구분되어 주어진다. ()
비밀번호를 복원할 수 있는 수열만 입력으로 주어진다.
출력
첫째 줄에 복원한 달구의 비밀번호를 출력한다.
복원 가능한 비밀번호가 여러 개 존재할 경우 사전순으로 가장 앞서는 비밀번호를 출력한다.