난수 생성기 역추적 (Small)
시간 제한5초메모리 제한512 MB
10^D 이하의 알 수 없는 소수를 법으로 하는 선형 생성기가 낸 연속된 K개 항으로 다음 항이 하나로 정해지면 출력하고 그렇지 않으면 모른다고 답합니다.
문제
온라인 포커 사이트를 만들려고 한다. 이런 시스템에서 중요한 부품 하나가 난수 생성기다. 빨라야 하고, 충분히 무작위여야 한다. 그래서 다음과 같은 절충안을 생각했다.
길이가 최대 인 난수를 만들고 싶다. 먼저 이하인 소수 를 하나 고른다. 다음으로 음이 아닌 정수 와 를 고른다. 마지막으로 이상 이하인 정수 시드 를 고른다.
의사난수 수열은 이렇게 출력한다. 먼저 를 출력하고, 다음 식으로 를 갱신한다.
갱신한 를 수열의 다음 항으로 출력하고, 같은 식으로 다시 갱신한다. 이 과정을 원하는 만큼 반복한다.
이 난수 생성기가 좋다고 생각하는가? 위와 같은 방식으로 만든 수열에서 연속한 개의 항을 읽어 그다음 항을 출력하는 프로그램을 작성하라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스의 첫 줄에는 와 가 주어지고, 그다음 줄에는 위에서 설명한 난수 생성기가 만든 연속한 개의 항이 주어진다.
제한
- 주어지는 개의 정수는 위에서 설명한 난수 생성기가 만든 수열의 연속한 항이다.
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호다.
이하인 소수 와 음이 아닌 정수 , 의 선택 중에서 주어진 개의 항을 만들어 내는 모든 선택이 같은 다음 항을 내놓으면, 자리에 그 값을 쓴다. 다음 항으로 서로 다른 값이 두 개 이상 나올 수 있으면 자리에 I don't know.를 쓴다.