Lord of the Characteristic Polynomials (2)

아직 제출이 없습니다시간 제한5초메모리 제한1024 MB

문제

n×nn \times n 행렬 AA의 행렬식(determinant) detA\det A는 아래와 같이 정의한다. 아래 식에서 a_ija\_{ij}AAiijj열에 위치한 원소를 나타낸다. 또한 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)\\}을 만족한다.

detA=_σ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(xIA)=c_nxn+c_n1xn1++c_0\phi\_{A}(x) = \det(x I - A) = c\_{n}x^{n} + c\_{n-1}x^{n-1} + \cdots + c\_{0}로 정의한다.

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

Z\[D]=a+bDa,bZ\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번째 줄의 2j12j-1번째 수를 xx, 2j2j번째 수를 yy라고 하면 a_ij=x+yDa\_{ij} = x + y\sqrt{D}를 만족한다.

출력

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

정수 aaMM으로 나눈 나머지란, aba - bMM의 배수가 되는 가장 작은 음 아닌 정수 bb를 의미한다.

제한

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

힌트

  • xZ\[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}