46pts
#include <cstdio>
#include <algorithm>
const int N = 610; int _a[N][N], *a[N];
int main()
{
int n, mod; scanf("%d%d", &n, &mod);
for (int i = 1; i <= n; ++i) a[i] = _a[i];
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j) scanf("%d", &a[i][j]), a[i][j] %= mod;
int ans = 1, f = 1;
for (int i = 1; i <= n; ++i)
{
for (int j = i + 1; j <= n; ++j)
while (a[j][i])
{
int t = a[i][i] / a[j][i];
for (int k = i; k <= n; ++k)
a[i][k] = (a[i][k] - 1ll * t * a[j][k] % mod + mod) % mod;
std::swap(a[i], a[j]); f *= -1;
}
ans = 1ll * ans * a[i][i] % mod;
}
ans = (ans * f + mod) % mod; printf("%d\n", ans); return 0;
}
不知道为啥常数这么大