CSUOJ 1979 古怪的行列式

2022-07-04 07:18:09 字數 1168 閱讀 8071

這幾天,子浩君潛心研究線性代數。 行列式的值定義如下:

其中,τ(j1j2...jn)為排列j1j2...jn的逆序數。

子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83(s),83(s),82(r)的話,子浩君會忍不住拿走它們:-d,然後這三個數的乘積將被視為1,而其它數值計算不變。那麼在子浩君的計算下,最後得到的行列式的值會為多少呢?

資料第一行為乙個整數t(t<=50)。 接下來有t組測試資料,每組資料開始有乙個整數n(2<=n<=8)。 接下來有n行數字,每行有n個數字,第ith行第jth個數字代表矩陣的第ith行第jth列的數字,保證每個數字在int範圍內的非負整數。

輸出乙個整數,保證在[-(2^63-1), 2^63-1]範圍內,即使在子浩君計算過程中也是。

4

21 1

0 13

83 1 1

0 83 1

0 0 82

383 1 1

0 82 1

0 0 83

383 1 1

0 83 1

0 1 82

1

1564898

-82

hint

例如,當子浩君遇到a11 * a22 * a33 * a44 = 83 * 83 * 82 * 1,會計算成1 * 1 = 1,而83 * 82 * 83 * 1或者83 * 83 * 1 * 82則不會改變運算規則

資料範圍比較小,可以直接暴力

#include#include#include#includetypedef long long ll;

using namespace std;

ll per[8] = ;

ll matri[10][10];

ll n;

ll check()//逆序數判斷

if (cnt & 1)

return -1;

else

return 1;

}int main()

}ll res = 0;

do//先進行一次操作然後再全排

{ll tmp = 1;

for (int i = 0; i < n; i++)

{if (i

csuoj 古怪的行列式

這幾天,子浩君潛心研究線性代數。行列式的值定義如下 子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍不住拿走它們 d,然後這三個數的乘積將被視為1,而其...

CSU1989 古怪的行列式 模擬

這幾天,子浩君潛心研究線性代數。行列式的值定義如下 子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍不住拿走它們 d,然後這三個數的乘積將被視為1,而其...

方陣和的行列式 方陣行列式的和

考慮同階方陣 a,b 問它們和的行列式與它們各自行列式的和是否相等 a b a b 結論是二者是不相等的。行列式的性質,我們知道,若行列式某 i 列 行 的元素都是 都可轉化為 兩數之和,則等於兩個行列式之和。d a11 a21 a n1a12 a22 a n2 b 1i c 1i b2i c2i ...