만드는 중입니다

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

캥거루 경주

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

요약
원형 트랙의 구간 수 n과 캥거루의 시작 위치 x가 주어질 때, y(y-1)칸씩 뛰어 1번 구간에 도달하는 최소 점프 횟수를 구합니다. 도달할 수 없으면 impossible을 출력합니다.
난이도

보통10점 중 7점

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

문제

오스트리아는 캥거루가 많은 나라로 잘 알려져 있다. 캥거루들은 몸 상태를 유지하기 위해 각자 육상 트랙을 하나씩 갖고 있으며, 매년 열리는 Austrian Pogostick Jumping Event를 그곳에서 준비한다.

각 육상 트랙은 길이가 11미터인 구간 nn개로 이루어진다. 구간에는 11번부터 nn번까지 순서대로 번호가 붙어 있다. 트랙은 순환형이어서 nn번 구간 다음에는 11번 구간이 온다.

각 트랙에서 캥거루는 구간 하나에 있다. 캥거루는 유한한 횟수만큼 점프할 수 있다. 캥거루가 yy번 구간에 있으면 한 번의 점프로 y(y−1)y(y-1)구간만큼 앞으로 이동한다. 캥거루가 11번 구간에 도달하는 데 필요한 최소 점프 횟수를 구하라.

입력

첫 줄에 캥거루의 수 kk (1≤k≤1051 \leq k \leq 10^5)가 주어진다. 이어지는 kk개의 줄에는 각각 두 정수 nn, xx (1≤x≤n≤10181 \leq x \leq n \leq 10^{18})가 주어진다. nn은 트랙의 구간 수이고, xx는 그 트랙에서 캥거루의 처음 위치이다.

출력

각 캥거루에 대해, 유한한 횟수의 점프로 11번 구간에 도달할 수 있다면 필요한 최소 점프 횟수를 출력한다. 도달할 수 없다면 impossible을 출력한다.

힌트

계산 중간값이 64비트 정수 범위를 넘을 수 있다. 이런 큰 값을 저장하려면 C++에서는 __int128을, Java나 Kotlin에서는 java.math.BigInteger를 쓴다. Python은 정수 크기 제한이 없으므로 별도 처리가 필요 없다.

예제1

  1. 예제 1

    입력
    4
    5 2
    6 2
    8 3
    12345678910 1
    
    예상 출력
    2
    impossible
    1
    0