51nod 1343 行列式的根
这题分块搞一搞,算到最后发现结果就是算矩阵J的行列式,要取模m,那个sign消掉了。
参考文献在这,欧几里德算法的应用,金斌
代码还是比较好写的,python代码
n,m=map(int,raw_input().split())
a=[]
for i in range(n):
a.append(list(map(int,raw_input().split())))
def det(a):
ans=1
for i in range(n):
for j in range(i+1,n):
while a[j][i]!=0:
t=a[i][i]//a[j][i]
for k in range(i,n):
a[i][k]=(a[i][k]-a[j][k]*t)%m
a[i][k],a[j][k]=a[j][k],a[i][k]
ans*=-1
if a[i][i]==0:
return 0
else:
ans=ans*a[i][i]%m
return ans%m
print(det(a)%m)