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

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

소수 나선

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

요약
울람 나선에서 두 수의 칸 사이를 합성수 칸만 지나 이동하는 최단 경로의 길이를 구하고, 경로가 없으면 impossible을 출력한다.
난이도

보통10점 중 6점

유형
BFS, 정수론, 구현, 수학
정답자
아직 제출이 없습니다

문제

지루함은 때로 창의력의 원천이 된다. 폴란드 수학자 Stanislaw Ulam(1909-1984)은 "길고도 지루한 발표"를 들으면서 그 이름을 딴 울람 나선을 발견했다. 그는 격자 위에 양의 정수를 한 칸에 하나씩 나선 모양으로 적는 것으로 시작했다. 그런 다음 합성수(즉 소수가 아닌 수)를 지웠다. 그가 발견한 흥미로운 성질은 남은 소수들이 격자의 여러 대각선을 따라 줄지어 나타나는 듯하다는 것이었다.

모든 양의 정수소수만

두 그림 모두 무한히 큰 격자이지만, 물리적인 제약 때문에 이 공간에는 유한한 일부만 들어간다.

위의 두 번째 격자(울람 나선) 위를 이동한다고 하자. 합성수가 들어 있는 칸으로는 자유롭게 이동할 수 있지만, 소수가 들어 있는 칸으로는 이동할 수 없다. 위, 아래, 왼쪽, 오른쪽으로 이동할 수 있고 대각선으로는 이동할 수 없다. 두 합성수 사이의 최단 경로 길이를 구하는 프로그램을 작성하라. 경로가 존재하지 않을 수도 있다. 예를 들어 12와 72가 적힌 칸에서는 다른 어떤 합성수 칸으로도 이동할 수 없다. 경로의 길이는 경로 위의 걸음 수이다.

입력

각 테스트 케이스는 격자 위의 두 칸을 나타내는 두 정수 1 ≤ x, y ≤ 10,000이 한 줄에 주어진다. 입력값에는 제한이 있지만, x와 y 사이의 경로는 전혀 제한되지 않는다.

출력

각 케이스마다 케이스 번호와 함께 칸 x와 y 사이의 최단 경로 길이를 출력하라. 경로가 존재하지 않으면 "impossible"을 출력하라.

예제1

  1. 예제 1

    입력
    1 4
    9 32
    10 12
    
    예상 출력
    Case 1: 1
    Case 2: 7
    Case 3: impossible