這幾天,子浩君潛心研究線性代數。 行列式的值定義如下:
子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為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
例如,當子浩君遇到a11
∗a22∗
a33∗a
44=83∗
83∗82∗
1 ,會計算成1 * 1 = 1,而83 * 82 * 83 * 1或者83 * 83 * 1 * 82則不會改變運算規則
資料量也小,就按照計算行列式的思路做就好了,用用next_permutation()還不是美滋滋
不過注意!字典序下乙個不一定和前乙個的逆序數隻差1!所以不能迴圈一次取一次反
我是暴力來的,也就每次多判斷最多28次,這個時間能接受
/**************************************
*source : csu1979
*knowledge point : adhoc
*author : csuzick
**************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define mk(a,b) make_pair(a,b)
#define ull unsigned long long
#define mem(a,n) memset(a,n,sizeof(a))
#define fread freopen("in.txt","r",stdin)
#define fwrite freopen("out.txt","w",stdout)
#define n 1010
#define inf 0x3f3f3f3f
#define eps 1e-9
using
namespace
std;
int matri[8][8];
int per[8]=;
int main()
}sort(per,per+8);
sum=0;
doelse
}for(int i=1;ifor(int j=0;jif(per[i]while(next_permutation(per,per+n));
printf("%lld\n",sum);
}return
0;}
csuoj 古怪的行列式
這幾天,子浩君潛心研究線性代數。行列式的值定義如下 子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍不住拿走它們 d,然後這三個數的乘積將被視為1,而其...
CSUOJ 1979 古怪的行列式
這幾天,子浩君潛心研究線性代數。行列式的值定義如下 其中,j1j2.jn 為排列j1j2.jn的逆序數。子浩君很厲害的,但是頭腦經常短路,所以他會按照行列式值的定義去計算,這個行列式子浩君也還是能算對的。但是,在計算的過程中,如果出現連續三行選取的元素為83 s 83 s 82 r 的話,子浩君會忍...
方陣和的行列式 方陣行列式的和
考慮同階方陣 a,b 問它們和的行列式與它們各自行列式的和是否相等 a b a b 結論是二者是不相等的。行列式的性質,我們知道,若行列式某 i 列 行 的元素都是 都可轉化為 兩數之和,則等於兩個行列式之和。d a11 a21 a n1a12 a22 a n2 b 1i c 1i b2i c2i ...