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

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

행렬과 쿼리

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

요약
N x N 정수 행렬 A와 Q개의 x가 주어질 때 각 x에 대해 det(A - xI)를 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

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

문제

행렬식은 선형대수학에서 다루는 중요한 대상 중 하나이다.

  • 자연수 nn에 대하여, SnS_n은 {1,2,⋯ ,n}\{1, 2, \cdots, n\}에서 {1,2,⋯ ,n}\{1, 2, \cdots, n\}으로 가는 모든 전단사함수의 집합이다.
  • σ∈Sn\sigma \in S_n에 대하여, inv(σ)\text{inv}(\sigma)는 1≤i<j≤n1 \le i < j \le n과 σ(i)>σ(j)\sigma(i) > \sigma(j)를 모두 만족하는 (i,j)(i, j)의 개수이다.
  • 이때, n×nn \times n 행렬 AA의 각 원소를 ai,ja_{i,j}라 하면, AA의 행렬식은 det(A)=∑σ∈Sn(−1)inv(σ)∏i=1nai,σ(i)\text{det}(A) = \sum_{\sigma \in S_n} (-1)^{\text{inv}(\sigma)} \prod_{i=1}^n a_{i, \sigma(i)}이다.

각 원소가 정수인 N×NN \times N 행렬 AA가 있을 때, 다음 쿼리를 QQ개 처리해보자.

  • 정수 xx가 입력되면, A−xIA - xI의 행렬식의 값을 출력한다. 단, II는 N×NN \times N 단위행렬이다.

값이 지나치게 커질 수 있으므로, 998244353998244353으로 나눈 나머지를 출력하도록 한다.

입력

첫 줄에는 행렬의 크기 NN과 쿼리의 개수 QQ가 순서대로 주어진다. (1≤N≤5001 \le N \le 500, 1≤Q≤2500001 \le Q \le 250000)

두 번째 줄부터 N+1N+1번째 줄까지, 행렬 AA의 원소들이 순서대로 입력된다. 즉,

a1,1a_{1,1} a1,2a_{1,2} ⋯\cdots a1,na_{1,n}

a2,1a_{2,1} a2,2a_{2,2} ⋯\cdots a2,na_{2,n}

⋯\cdots ⋯\cdots ⋯\cdots ⋯\cdots

an,1a_{n,1} an,2a_{n,2} ⋯\cdots an,na_{n,n}

과 같은 형식으로 행렬의 원소들이 주어진다. (0≤ai,j<9982443530 \le a_{i,j} < 998244353)

N+2N+2번째 줄에는 QQ개의 쿼리가 차례대로 주어진다. 쿼리로 주어지는 모든 정수는 00 이상 998244353998244353 미만이다.

출력

각 쿼리의 답을 순서대로 사이에 공백을 두고 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3 6
    2 4 5
    6 3 8
    1 6 3
    10 9 5 8 3 1
    
    예상 출력
    407 470 402 495 260 110