만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

특성 다항식의 군주 (2)

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

요약
각 원소가 a + b*sqrt(D) 꼴인 n x n 행렬의 특성 다항식 계수를 구합니다. 각 계수의 정수 부분과 sqrt(D) 부분을 M으로 나눈 나머지로 출력합니다.
난이도

어려움10점 중 8점

유형
행렬, 수학, 정수론
정답자
아직 제출이 없습니다

문제

n×nn \times n 행렬 AA의 행렬식은 다음과 같이 정의한다. 식에서 aija_{ij}는 AA의 ii행 jj열에 있는 원소이다. SnS_n은 {1,⋯ ,n}\{1, \cdots, n\}의 순열들의 집합이며, 각 σ∈Sn\sigma \in S_n에 대해 {1,⋯ ,n}={σ(1),⋯ ,σ(n)}\{1, \cdots, n\} = \{\sigma(1), \cdots, \sigma(n)\}이 성립한다.

det⁡A=∑σ∈Snsgn(σ)⋅(∏i=1naiσ(i))\det A = \sum_{\sigma \in S_{n}} \mathrm{sgn}(\sigma) \cdot \left(\prod_{i = 1}^{n} a_{i \sigma(i)}\right)

AA의 특성 다항식 ϕA(x)\phi_{A}(x)는 xx에 대한 nn차 다항식이며, ϕA(x)=det⁡(xI−A)=cnxn+cn−1xn−1+⋯+c0\phi_{A}(x) = \det(xI - A) = c_{n}x^{n} + c_{n-1}x^{n-1} + \cdots + c_{0}로 정의한다.

이번 문제의 행렬 원소는 특이하다. 1보다 큰 제곱수로 나누어떨어지지 않는 정수 D≠1D \neq 1이 주어진다. AA의 모든 원소는 정수 a,ba, b에 대해 a+bDa + b\sqrt{D} 꼴로 나타낼 수 있는 수, 즉 다음 집합의 원소이다.

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

ϕA(x)\phi_{A}(x)의 계수 c0,⋯ ,cnc_{0}, \cdots, c_{n}도 Z[D]\mathbb{Z}[\sqrt{D}]의 원소임을 증명할 수 있다. 각 ci=pi+qiDc_{i} = p_{i} + q_{i}\sqrt{D}를 만족하는 정수 pi,qip_{i}, q_{i}는 유일하게 존재한다. 주어진 정수 MM에 대해, 각 pip_{i}와 qiq_{i}를 MM으로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

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

이어지는 nn개의 줄에는 각각 2n2n개의 정수가 주어진다. ii번째 줄의 2j−12j-1번째 수를 xx, 2j2j번째 수를 yy라고 하면 aij=x+yDa_{ij} = x + y\sqrt{D}이다.

출력

총 n+1n+1개의 줄에 걸쳐, ii번째 줄에는 pip_{i}와 qiq_{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는 1보다 큰 제곱수로 나누어떨어지지 않는다.
  • 모든 1≤i,j≤n1 \le i, j \le n에 대해 aij=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