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

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

아이스크림 고르기

시간 제한1초메모리 제한256 MB

요약
n가지 맛과 k면체 주사위가 주어질 때 완전한 공정 선택을 보장하는 최소 던지기 횟수를 구하고 불가능하면 unbounded를 출력합니다.
난이도

보통10점 중 7점

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

문제

슈퍼마켓 냉동고 앞에 서서 저녁 식사 후에 먹을 아이스크림을 nn가지 중에서 하나 골라야 한다. 한참 들여다봤지만 전부 맛있어 보여서 결정을 포기했다. 대신 주머니에 있던 공정한 kk면 주사위를 꺼내 운에 맡기기로 한다.

종류의 수 nn이 kk와 같다는 보장이 없으니, 주사위를 한 번 굴려 나온 값 ii로 ii번째 종류를 고르는 방법을 항상 쓸 수는 없다. 그래서 주사위를 0번 이상 굴려서 모든 종류가 정확히 같은 확률로 뽑히도록 하는 알고리즘이 필요하다. 기각 표본 추출법(accept-reject method)을 쓰면 이렇게 공정하게 고를 수 있다.

그러다 같은 날 오후에 절대 늦으면 안 되는 대회가 있다는 사실이 떠올랐다. 기각 표본 추출법은 공정한 결과가 나오기까지 굴려야 하는 횟수에 상한이 없어서, 냉동고 앞에 오래 서 있다가 대회를 놓칠 수도 있다. 그러니 공정하면서 최악의 경우에 굴리는 횟수가 가장 적은 알고리즘을 찾기로 한다.

nn과 kk가 주어질 때, 한 번 실행에 주사위를 최대 ii번만 굴리는 공정한 알고리즘이 존재하는 가장 작은 ii를 구하라.

입력

첫째 줄에 테스트 케이스의 개수를 나타내는 양의 정수 하나가 주어진다. 이 값은 100 이하다.

이어서 각 테스트 케이스마다:

  • 한 줄에 공백으로 구분된 정수 nn과 kk가 주어진다 (1≤n,k≤1091 \le n, k \le 10^9). nn은 아이스크림 종류의 수, kk는 주사위 면의 수다.

출력

각 테스트 케이스마다:

  • 공정한 선택이 반드시 가능해지는 최소 굴림 횟수를 정수 하나로 한 줄에 출력한다. 그런 횟수가 없으면 대신 unbounded를 출력한다.

힌트

n=4n = 4, k=20k = 20이면 한 번만 굴려도 충분하다.

예제3

  1. 예제 1

    입력
    3
    4 2
    2 4
    3 2
    
    예상 출력
    2
    1
    unbounded
    
  2. 예제 2

    입력
    2
    4 20
    1 1000000000
    
    예상 출력
    1
    0
    
  3. 예제 3

    입력
    3
    1 1
    1 7
    1 1000000000
    
    예상 출력
    0
    0
    0