这题分块搞一搞,算到最后发现结果就是算矩阵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=1for 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)%ma[i][k],a[j][k]=a[j][k],a[i][k]ans*=-1if a[i][i]==0:return 0else:ans=ans*a[i][i]%mreturn ans%mprint(det(a)%m)