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

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

제곱잉여

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

요약
홀수 소수 p와 정수 a가 주어질 때 르장드르 기호 (a/p)를 이차 상호 법칙으로 계산한다.
난이도

보통10점 중 7점

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

문제

1801년 칼 프리드리히 가우스(1777-1855)는 현대 정수론의 토대를 놓은 『Disquisitiones Arithmeticae』를 출간했으며, 이 책은 오늘날까지도 읽히고 있다. 이 책에서 자주 다루어지는 주제 중 하나가 바로 제곱잉여(quadratic residue)이다.

소수 pp와 a≢0(modp)a \not\equiv 0 \pmod{p}인 정수 aa가 주어진다. aa가 pp에 대한 제곱잉여이려면, 다음을 만족하는 정수 xx가 존재해야 한다.

x2≡a(modp)x^2 \equiv a \pmod{p}

르장드르(1752-1833)는 아래와 같은 르장드르 기호를 정의했다.

(ap)={1a 가 p 에 대한 제곱잉여인 경우−1a 가 p 에 대한 제곱잉여가 아닌 경우\left(\frac{a}{p}\right) = \begin{cases} 1 & a \text{ 가 } p \text{ 에 대한 제곱잉여인 경우} \\ -1 & a \text{ 가 } p \text{ 에 대한 제곱잉여가 아닌 경우} \end{cases}

르장드르 기호는 다음 성질들을 이용해 계산할 수 있다. 아래 성질들은 서로 다른 홀수 소수 pp, qq와 pp로 나누어떨어지지 않는 정수 aa, bb에 대해서만 성립한다.

  1. (abp)=(ap)(bp)\left(\frac{ab}{p}\right) = \left(\frac{a}{p}\right)\left(\frac{b}{p}\right)
  2. (1p)=1\left(\frac{1}{p}\right) = 1
  3. a≡b(modp)⇒(ap)=(bp)a \equiv b \pmod{p} \Rightarrow \left(\frac{a}{p}\right) = \left(\frac{b}{p}\right)
  4. (−1p)=(−1)(p−1)/2,(2p)=(−1)(p2−1)/8\left(\frac{-1}{p}\right) = (-1)^{(p-1)/2}, \quad \left(\frac{2}{p}\right) = (-1)^{(p^2-1)/8}
  5. (pq)(qp)=(−1)(p−1)(q−1)/4\left(\frac{p}{q}\right)\left(\frac{q}{p}\right) = (-1)^{(p-1)(q-1)/4}

예를 들어 르장드르 기호를 다음과 같이 계산할 수 있다.

(2979)=(−1)78⋅28/4(7929)=(7929)=(−829)=(−129)(229)3=(−129)(229)=(−1)28/2(−1)(292−1)/8=(−1)14(−1)105=−1\left(\frac{29}{79}\right) = (-1)^{78\cdot28/4} \left(\frac{79}{29}\right) = \left(\frac{79}{29}\right) = \left(\frac{-8}{29}\right) = \left(\frac{-1}{29}\right) \left(\frac{2}{29}\right)^{3} = \left(\frac{-1}{29}\right) \left(\frac{2}{29}\right) = (-1)^{28/2}(-1)^{(29^2-1)/8} = (-1)^{14}(-1)^{105} = -1

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어지는 각 테스트 케이스는 두 정수 aa와 pp로 이루어진다. pp (2<p<109)(2 < p < 10^9)는 홀수 소수이고, aa는 a≢0(modp)a \not\equiv 0 \pmod{p}와 ∣a∣≤109\left| a \right| \le 10^9을 만족한다.

출력

각 테스트 케이스에 대해 첫째 줄에 "Scenario #i:"를 출력한다. 여기서 ii는 1부터 시작하는 테스트 케이스 번호이다. 다음 줄에 르장드르 기호 (ap)\left(\frac{a}{p}\right)의 값(1 또는 -1)을 출력한다. 서로 다른 테스트 케이스의 출력 사이에는 빈 줄을 하나 넣는다.

예제1

  1. 예제 1

    입력
    3
    29 79
    2 29
    1 3
    
    예상 출력
    Scenario #1:
    -1
    
    Scenario #2:
    -1
    
    Scenario #3:
    1