問題一覧 > 教育的問題

No.2445 奇行列式

レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 26
作問者 : 👑 p-adicp-adic / テスター : ShirotsumeShirotsume
2 ProblemId : 9397 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-07-30 13:10:44

注意

この問題の実行時間制限は3000[ms]です。

問題文

入力に $2$ 個の正整数 $N$ と $B$ と、非負整数係数 $N$ 次正方行列 $A$ が与えられます。

 

$N$ 以下の各正整数 $i, j$ に対し、$A$ の $(i,j)$ 成分を $A_{i,j}$ と置きます。

$N$ 次奇置換 $\sigma$ 全体をわたる $\prod_{i=1}^{N} A_{i,\sigma(i)}$ の総和を $B$ で割った余りを求めてください。

 

以下、奇置換について知らない人向けの説明をします。(クリックで開く)

 

正整数 $n$ に対し、$n$ 次の置換とは大雑把には $n$ 以下の正整数をシャッフルする関数のことです。より正確には以下のように定義されます:

 

定義(置換)

$n$ 以下の正整数全体の集合を $I_n$ と置く。$n$ 次の置換とは、 $I_n$ から $I_n$ への全単射な写像である。

 

$a$ を $n$ 次の置換とします。$a$ が互換であるとは、大雑把には $a$ がちょうど $2$ つの数を入れ替えるということです。より正確には、以下を満たす $n$ 以下の正整数 $i$ と $j$ が存在するということです:

  1. $i \neq j$ である。
  2. $a(i) = j$ である。
  3. $a(j) = i$ である。
  4. $n$ 以下の任意の正整数 $k$ に対し、$k \neq i$ かつ $k \neq j$ ならば、$a(k) = k$ である。

互換を用いて、偶置換と奇置換という概念を以下のように定めます:

  1. 偶数個の互換の合成で表せる $n$ 次の置換を、$n$ 次の偶置換と呼ぶ。
  2. 偶数個の互換の合成で表せない $n$ 次の置換を、$n$ 次の奇置換と呼ぶ。

ただし互換 $0$ 個の合成は恒等置換として定義されます。従って恒等置換は偶置換です。

入力

入力は次の形式で標準入力から $1 + N$ 行で与えられます:

  • $1$ 行目に $N, B$ が半角空白区切りで与えられます。
  • $N$ 以下の各正整数 $i$ に対し、$1 + i$ 行目に $A$ の第 $i$ 行の各成分が半角空白区切りで与えられます。
$N$ $B$
$A_{1,1}$ $\cdots$ $A_{1,N}$
$\vdots$
$A_{N,1}$ $\cdots$ $A_{N,N}$

制約

入力は以下の制約を満たします:

  • $N$ は $1 \leq N \leq 20$ を満たす整数である。
  • $B$ は $1 \leq B \leq 10^9$ を満たす整数である。
  • $N$ 以下の任意の正整数 $i, j$ に対し、$A_{i,j}$ は $0 \leq A_{i,j} \leq 10^{18}$ を満たす整数である。

出力

$N$ 次奇置換 $\sigma$ 全体をわたる $\prod_{i=1}^{N} A_{i,\sigma(i)}$ の総和を $B$ で割った余りを求めてください。

最後に改行してください。

サンプル

サンプル1
入力
1 2
3
出力
0

$N = 1$ 次の置換は恒等置換に限られ、恒等置換は偶置換です。従って求める総和は $0$ であり、$0$ を $B = 2$ で割った余りは $0$ です。

サンプル2
入力
2 3
1 2
3 1
出力
0

$2$ 次の置換は恒等置換と互換 $(1,2)$ の $2$ つがあります。前者は偶置換であり後者は奇置換であるので、求める総和は

$\displaystyle A_{1,2} A_{2,1} = 2 \times 3 = 6 $

です。$6$ を $B = 3$ で割った余りは $0$ です。

サンプル3
入力
3 10
1 2 3
4 5 6
7 8 9
出力
5

$3$ 次の置換は $6$ つあります。そのうち奇置換は互換 $(1,2)$ と $(1,3)$ と $(2,3)$ の $3$ つあるので、求める総和は

$\displaystyle A_{1,2} A_{2,1} A_{3,3} + A_{1,3} A_{2,2} A_{3,1} + A_{1,1} A_{2,3} A_{3,2} = 2 \times 4 \times 9 + 3 \times 5 \times 7 + 1 \times 6 \times 8 = 72 + 105 + 48 = 225 $

です。$225$ を $B = 10$ で割った余りは $5$ です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。