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

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

소수의 주기

면접 대비

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

요약
b진법으로 주어진 분자 x와 분모 y에 대해 x/y를 b진법 소수로 나타냈을 때 순환마디의 길이를 구한다.
난이도

보통10점 중 6점

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

문제

계산기 없이 두 수의 나눗셈을 손으로 계산하는 연습을 하려고 한다. 이번 시험에는 bb진법으로 나타낸 두 수를 나눴을 때 그 몫의 주기의 길이를 구하는 문제가 나온다. 손으로 계산한 결과가 맞는지 확인해 주는 프로그램을 작성하자.

진법 bb, 분자 xx, 분모 yy가 주어진다. xx와 yy는 모두 bb진법으로 나타낸 수이다. bb진법 수 q=xyq = \dfrac{x}{y}의 순환마디(주기)의 길이를 구하는 프로그램을 작성하시오. 유리수 qq를 bb진법으로 나타내는 방법은 다음과 같다.

q=qnqn−1…q0.q−1q−2⋯=∑i=−∞nqibiq = q_n q_{n-1} \dots q_0 . q_{-1} q_{-2} \dots = \sum_{i=-\infty}^{n} q_i b^i

예를 들어 보자.

  • 110210=0.510\dfrac{1_{10}}{2_{10}} = 0.5_{10}
  • 13103=0.13\dfrac{1_{3}}{10_{3}} = 0.1_{3}
  • 2101110=0.181818…10=0.18‾10\dfrac{2_{10}}{11_{10}} = 0.181818\dots_{10} = 0.\overline{18}_{10}

위의 처음 두 예는 유한소수이므로 주기의 길이는 00이다. 첫 번째 예를 주기의 길이가 11인 0.49‾100.4\overline{9}_{10}으로 나타낼 수도 있지만, 이 문제에서는 그런 표현은 고려하지 않는다. 세 번째 예의 주기의 길이는 22이다.

입력

첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스는 한 줄로 이루어지며, 진법 bb, 분자 xx, 분모 yy가 공백으로 구분되어 주어진다. (2≤b≤362 \le b \le 36, 0<y≤100000100 < y \le 10000010)

bb는 10진법으로 주어지고, xx와 yy는 bb진법으로 주어진다. 00부터 99까지의 숫자로 나타낼 수 없는 자리는 a(또는 A)부터 시작하는 알파벳으로 나타내며, 대소문자는 구별하지 않는다.

출력

각 테스트 케이스마다 Scenario #i:를 출력한 뒤, 다음 줄에 주기의 길이를 출력한다. (ii는 테스트 케이스 번호로 11부터 시작한다.) 각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.

예제1

  1. 예제 1

    입력
    4
    10 1 2
    3 1 10
    10 2 11
    36 HI ho
    
    예상 출력
    Scenario #1:
    0
    
    Scenario #2:
    0
    
    Scenario #3:
    2
    
    Scenario #4:
    13