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

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

Lord of the Characteristic Polynomials (2)

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

요약
Z[sqrt(D)] 위의 n x n 행렬이 주어질 때 특성 다항식의 계수를 M으로 나눈 나머지를 각각 두 정수로 출력한다.
난이도

보통10점 중 4점

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

문제

n×nn \times n 행렬 AA의 행렬식(determinant) det⁡A\det A는 아래와 같이 정의한다. 아래 식에서 a_ija\_{ij}는 AA의 ii행 jj열에 위치한 원소를 나타낸다. 또한 S_nS\_{n}는 1,⋯ ,n\\{1, \cdots, n\\}의 순열들의 집합으로, 각 σ∈S_n\sigma \in S\_{n}에 대해 1,⋯ ,n=σ(1),⋯ ,σ(n)\\{1, \cdots, n\\} = \\{\sigma(1), \cdots, \sigma(n)\\}을 만족한다.

det⁡A=∑_σ∈S_nsgn(σ)⋅(∏_i=1na_iσ(i))\det A = \sum\_{\sigma \in S\_{n}} \mathrm{sgn}(\sigma) \cdot \left(\prod\_{i = 1}^{n} a\_{i \sigma(i)}\right)

AA의 characteristic polynomial ϕ_A(x)\phi\_{A}(x)는 xx에 대한 nn차 다항식으로, ϕ_A(x)=det⁡(xI−A)=c_nxn+c_n−1xn−1+⋯+c_0\phi\_{A}(x) = \det(x I - A) = c\_{n}x^{n} + c\_{n-1}x^{n-1} + \cdots + c\_{0}로 정의한다.

이번에는 행렬 AA의 원소가 다소 특이하다. 11보다 큰 제곱수로 나누어떨어지지 않는 정수 D≠1D \neq 1가 주어진다. 이 때 AA의 모든 원소는 두 정수 a+bDa + b\sqrt{D} 꼴로 나타낼 수 있는 수로, 아래와 같이 정의된 집합 ZD\mathbb{Z}\sqrt{D}의 원소이다.

Z\[D]=a+bD∣a,b∈Z\mathbb{Z}\[\sqrt{D}] = \\{a + b\sqrt{D} \mid a, b \in \mathbb{Z} \\}

각 원소가 Z\[D]\mathbb{Z}\[\sqrt{D}]에 속하는 행렬 AA가 주어진다. 이 때 ϕ_A(x)\phi\_{A}(x)의 계수 c_0,⋯ ,c_nc\_{0}, \cdots, c\_{n} 또한 Z\[D]\mathbb{Z}\[\sqrt{D}]의 원소임을 증명할 수 있다. 또한, c_i=p_i+q_iDc\_{i} = p\_{i} + q\_{i}\sqrt{D}를 만족하는 정수 p_i,q_ip\_{i}, q\_{i} 또한 유일하게 존재한다. 주어진 정수 MM에 대해, 각 p_ip\_{i}와 q_iq\_{i}를 MM으로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

입력의 첫 줄에 행렬의 크기를 나타내는 정수 nn과 나눗셈에 사용되는 정수 MM, 정수 DD가 주어진다.

둘째 줄부터 nn개의 줄에 걸쳐 행렬 AA의 원소가 주어진다. 각 줄에는 2n2n개의 정수가 주어지며, 이 중 ii번째 줄의 2j−12j-1번째 수를 xx, 2j2j번째 수를 yy라고 하면 a_ij=x+yDa\_{ij} = x + y\sqrt{D}를 만족한다.

출력

총 n+1n+1개의 줄에 걸쳐, ii번째 줄에는 p_ip\_{i}와 q_iq\_{i}를 MM으로 나눈 나머지를 공백으로 구분지어 출력한다.

정수 aa를 MM으로 나눈 나머지란, a−ba - b가 MM의 배수가 되는 가장 작은 음 아닌 정수 bb를 의미한다.

제한

  • 1≤n≤1001 \le n \le 100
  • 1≤M≤1091 \le M \le 10^{9}
  • −109≤D≤109-10^{9} \le D \le 10^{9}
  • D≠1D \neq 1이고, DD는 11보다 큰 제곱수로 나누어 떨어지지 않는다.
  • 모든 1≤i,j≤n1 \le i, j \le n에 대해 a_ij=x+yDa\_{ij} = x + y\sqrt{D}라고 두면, 0≤x,y<M0 \le x, y < M.

힌트

  • 각 x∈Z\[D]x \in \mathbb{Z}\[\sqrt{D}]에 대해, x=a+bDx = a + b\sqrt{D} 를 만족하는 정수 a,ba, b는 유일하게 존재한다.
  • (a+bD)+(c+dD)=(a+c)+(b+d)D(a + b\sqrt{D}) + (c + d\sqrt{D}) = (a + c) + (b + d)\sqrt{D}
  • (a+bD)(c+dD)=(ac+bdD)+(ad+bc)D(a + b\sqrt{D})(c + d\sqrt{D}) = (ac + bdD) + (ad + bc)\sqrt{D}

예제1

  1. 예제 1

    입력
    3 107 -5
    3 1 4 1 5 9
    2 6 5 3 5 8
    9 7 9 3 2 3
    
    예상 출력
    26 69
    2 31
    97 100
    1 0