각 유리수 a/b가 처음으로 빠지는 단계 n(0부터 10까지)을 출력하고, 열한 집합에 모두 속하면 -1을 출력합니다.
보통5수학시뮬레이션아직 제출이 없습니다시간 제한3초메모리 제한256 MB집합론을 공부하던 승현이는 다음 집합을 알게 됐다.
C0=[0,1]
Cn={a+∑i=1n3iai0≤a≤3n1,ai∈{0,2}}(n∈N)
C=⋂n=0∞Cn
C가 잘 이해되지 않던 승현이는 두 가지 작업을 계획했다. 첫 번째는 유리수를 하나 골라 그 수가 C에 들어가는지 확인하는 작업이다. 들어가지 않으면 두 번째 작업으로 넘어가서, 그 수를 포함하지 않는 집합 중 아랫첨자 n이 가장 작은 집합을 찾는다.
몇 번 손으로 해 보니 이 작업이 몹시 귀찮아진 승현이는 컴퓨터를 쓰기로 했다. 그런데 코딩까지 귀찮았는지 후배인 당신에게 일을 넘겼다. 얼떨결에 거절하지 못하고 일을 떠맡은 당신은 승현이를 골탕 먹일 심보로 불완전한 판정 프로그램을 만들기로 했다.
답이 너무 이상하게 나오면 승현이가 속지 않을 테니 적당히 그럴듯하게 출력해야 한다. 그래서 C0부터 C10까지에 대해서만 포함 여부를 확인하고, 이 열한 개 집합이 모두 그 수를 포함하면 C에 포함된다고 판정하기로 했다. 이 조건을 만족하는 불완전한 프로그램을 작성하자.
첫 줄에 테스트 케이스의 수 T가 주어진다.
다음 T개 줄에는 유리수의 분자 a와 분모 b가 공백을 사이에 두고 주어진다. (0≤a≤100000, 1≤b≤100000)
각 테스트 케이스마다 한 줄씩 출력한다.
C0부터 C10까지 중 ba를 포함하지 않는 집합이 있으면 그중 아랫첨자 n이 가장 작은 집합의 n을 출력한다. 열한 개 집합이 모두 포함하면 -1을 출력한다.
C1=[0,31]∪[32,1]이고, C2=[0,91]∪[92,31]∪[32,97]∪[98,1]이다.
21은 C0에는 들어가지만 C1에는 들어가지 않는다. 61은 C1까지는 들어가고 C2에서 처음으로 빠진다.
분자가 0인 수는 집합 정의에서 a=0, 모든 ai=0으로 두면 되므로 C0부터 C10까지 전부 포함한다.
ba가 1보다 크면 C0부터 이미 포함하지 않으므로 0을 출력한다.