What the Flex?
시간 제한0.5초메모리 제한1024 MB
버전 a와 상한 N이 주어질 때, 같은 소인수 집합을 가지면서 a 바로 다음에 오는 버전을 구합니다. 그런 버전이 없으면 -1을 출력합니다.
문제
\textit{이 문제에서는 같은 소인수 집합을 가지는 정수들이 이루는 특정 순서에서 다음 정수를 찾아야 한다.}
고고학자 Kris는 최근 Adobe creek 근처에서 발견된 고대 유적 Flex를 연구한다. 이 유적에는 The Elders가 만든 텔레포터 버전 번호가 새겨져 있었다. 각 버전 번호는 1 이상 이하의 정수이다. 텔레포터마다 숫자 열이 하나씩 있고, 각 열은 그 텔레포터의 모든 버전을 만들어진 순서대로 나열한다. 일부 숫자는 지워졌다.
Kris는 텔레포터 의 버전 를 막 조사했고, 이제 이 텔레포터의 다음 버전을 살펴보려 한다. 그러나 다음 버전의 번호는 모른다. 올바른 풀이 프로그램은 이 번호를 반드시 알아내야 한다. Kris가 이미 아는 사실은 다음과 같다.
- 1부터 까지의 각 수는 어떤 텔레포터의 어떤 버전 번호이다.
- 한 텔레포터의 서로 다른 버전은 서로 다른 번호를 가진다.
- 텔레포터마다 고유한 소수 집합이 있다. 한 텔레포터를 고정하고, 그 소수 집합을 ()이라 하자.
- 이 텔레포터의 모든 버전 번호는 의 각 소수로 나누어떨어지고, 에 없는 소수로는 나누어떨어지지 않는다. 따라서 버전 번호는 일 때 로 쓸 수 있다. 각 버전은 개의 양의 정수로 이루어진 튜플 에 대응한다.
- 튜플 이 보다 먼저 만들어졌다는 것은, 이고 인 ()가 존재한다는 뜻이다. 즉 버전은 튜플의 사전식 순서로 정렬된다.
입력
입력은 한 줄이며, 텔레포터의 버전 번호 와 정수 () 두 개가 주어진다.
출력
같은 텔레포터의 버전 중 버전 바로 다음에 만들어진 버전이 있으면 그 번호를 출력한다. 없으면 "-1"을 출력한다.