만드는 중입니다

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

What the Flex?

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

요약
버전 a와 상한 N이 주어질 때, 같은 소인수 집합을 가지면서 a 바로 다음에 오는 버전을 구합니다. 그런 버전이 없으면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
정수론, 그리디, 수학
정답자
아직 제출이 없습니다

문제

\textit{이 문제에서는 같은 소인수 집합을 가지는 정수들이 이루는 특정 순서에서 다음 정수를 찾아야 한다.}

고고학자 Kris는 최근 Adobe creek 근처에서 발견된 고대 유적 Flex를 연구한다. 이 유적에는 The Elders가 만든 텔레포터 버전 번호가 새겨져 있었다. 각 버전 번호는 1 이상 NN 이하의 정수이다. 텔레포터마다 숫자 열이 하나씩 있고, 각 열은 그 텔레포터의 모든 버전을 만들어진 순서대로 나열한다. 일부 숫자는 지워졌다.

Kris는 텔레포터 bb의 버전 aa를 막 조사했고, 이제 이 텔레포터의 다음 버전을 살펴보려 한다. 그러나 다음 버전의 번호는 모른다. 올바른 풀이 프로그램은 이 번호를 반드시 알아내야 한다. Kris가 이미 아는 사실은 다음과 같다.

  1. 1부터 NN까지의 각 수는 어떤 텔레포터의 어떤 버전 번호이다.
  2. 한 텔레포터의 서로 다른 버전은 서로 다른 번호를 가진다.
  3. 텔레포터마다 고유한 소수 집합이 있다. 한 텔레포터를 고정하고, 그 소수 집합을 X={p1,p2,…,pm}X = \{p_1, p_2, \dots, p_m\} (p1<p2<⋯<pmp_1 < p_2 < \dots < p_m)이라 하자.
  4. 이 텔레포터의 모든 버전 번호는 XX의 각 소수로 나누어떨어지고, XX에 없는 소수로는 나누어떨어지지 않는다. 따라서 버전 번호는 ki≥1k_i \ge 1일 때 p1k1p2k2…pmkmp_1^{k_1} p_2^{k_2} \dots p_m^{k_m}로 쓸 수 있다. 각 버전은 mm개의 양의 정수로 이루어진 튜플 (k1,k2,…,km)(k_1, k_2, \dots, k_m)에 대응한다.
  5. 튜플 α=(k1,…,km)\alpha = (k_1, \dots, k_m)이 β=(l1,…,lm)\beta = (l_1, \dots, l_m)보다 먼저 만들어졌다는 것은, k1=l1,…,ki=lik_1 = l_1, \dots, k_i = l_i이고 ki+1<li+1k_{i+1} < l_{i+1}인 ii (0≤i<m0 \le i < m)가 존재한다는 뜻이다. 즉 버전은 튜플의 사전식 순서로 정렬된다.

입력

입력은 한 줄이며, 텔레포터의 버전 번호 aa와 정수 NN (1≤a≤N≤10181 \le a \le N \le 10^{18}) 두 개가 주어진다.

출력

같은 텔레포터의 버전 중 버전 aa 바로 다음에 만들어진 버전이 있으면 그 번호를 출력한다. 없으면 "-1"을 출력한다.

예제2

  1. 예제 1

    입력
    6 13
    
    예상 출력
    12
    
  2. 예제 2

    입력
    12 13
    
    예상 출력
    -1