만드는 중입니다

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

특성 다항식의 군주 (1)

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

요약
n x n 정수 행렬과 정수 M이 주어질 때, 행렬의 특성 다항식 계수를 M으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

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

문제

n×nn \times n 행렬 AA의 행렬식(determinant) det⁡A\det A는 다음과 같이 정의한다. 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) \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로 정의한다.

각 원소가 00 이상 10910^9 미만인 정수 행렬 AA가 주어진다. ϕA(x)\phi_A(x)의 계수 c0,⋯ ,cnc_0, \cdots, c_n도 정수임을 증명할 수 있다. 주어진 정수 MM에 대해, 각 계수를 MM으로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

첫 줄에 행렬의 크기 nn과 나눗셈에 사용할 정수 MM이 주어진다.

둘째 줄부터 nn개의 줄에 걸쳐 행렬 AA의 원소가 각 줄에 공백으로 구분되어 nn개씩 주어진다. ii번째 줄의 jj번째 수는 AA의 ii행 jj열 원소 aija_{ij}이다.

출력

n+1n+1개의 줄에 c0,⋯ ,cnc_0, \cdots, c_n을 MM으로 나눈 나머지를 순서대로 출력한다.

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

제한

  • 1≤n≤5001 \le n \le 500
  • 2≤M≤1092 \le M \le 10^{9}
  • 0≤aij<1090 \le a_{ij} < 10^{9} (1≤i,j≤n)(1 \le i, j \le n)

예제2

  1. 예제 1

    입력
    2 100
    2 1
    4 3
    
    예상 출력
    2
    95
    1
    
  2. 예제 2

    입력
    5 200
    3 1 4 1 5
    9 2 6 5 3
    5 7 9 8 9
    3 2 3 8 4
    6 2 6 4 3
    
    예상 출력
    160
    79
    94
    15
    175
    1