之前在学习计数问题的时候也在网上找了很多关于行列式的资料
但是发现很多地方都只介绍2\3阶的情况
一些论文介绍的方法又看不懂
然后就一直耽搁着
今天恰好出到这样的题目 发现标算的代码简介明了 还挺开心的
function det(a:arr):int64; var i,j,k:longint; t,ans:int64; begin ans:=1; for i:=1 to n do begin for j:=i+1 to n do while a[j,i]<>0 do begin t:=a[i,i] div a[j,i]; for k:=i to n do a[i,k]:=(a[i,k]-t*a[j,k]) mod p; for k:=1 to n do swap(a[i,k],a[j,k]); ans:=-ans; end; if a[i,i] = 0 then exit(0); ans:=(ans * a[i,i]) mod p; end; while ans<0 do inc(ans,p); exit(ans); end;
时间: 2024-10-16 01:15:29