🌟

128. 行列式の定義

2023/03/22に公開

【問題概要】
n次正方行列Aの行列式det(A)を再帰的に定義した式が与えられる。この式を用いて、行列式を求めるプログラムを実装せよ。

【解説】
行列式の再帰的な定義式は以下の通りです。

det(A) = a[1][1]*det(A[1]) - a[1][2]*det(A[2]) + a[1][3]*det(A[3]) - ... + (-1)^(1+n)*a[1][n]*det(A[n])

ここで、A[1], A[2], ..., A[n]はAの副行列であり、Aの1行目とi列目を取り除いた行列です。

この定義式を用いて、行列式を再帰的に求めることができます。具体的には、n=1のときは行列式の値がa[1][1]に等しいとして処理を終了し、n>1のときは上記の定義式を用いてdet(A[1]), det(A[2]), ..., det(A[n])を再帰的に求め、それらの値を用いて行列式を計算します。

【関連するAtcoderの例題】
「Matrix Determinant」
https://atcoder.jp/contests/abc150/tasks/abc150_f
レーティング難易度(★): 6
ACした回答者に絞った場合のレーティング帯の範囲(数値): 1849 - 3309
レーティング難易度(%): 24.03%
レーティング(数値): 2705
AC率(%): 34.70%
ACしたスコアの高い回答者: wata, hotsun-kun
解説ブログ: https://betrue12.hateblo.jp/entry/2019/09/23/213903

Discussion