这份代码蒟蒻真的卡不来常了,求大佬帮忙看看是写错了还是真的被卡常了
#include<bits/stdc++.h>
using namespace std;
int n,mod;
long long a[605][605];
inline int read() {
int s=0;
char ch=getchar();
while(ch<48||ch>57)ch=getchar();
while(ch>47&&ch<58)s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return s;
}
int Mod(int x) {
return x<mod?x:x-mod;
}
int Work(int n,int opt=1,int ans=1) {
for(int i=1; i<=n; ++i)
for(int j=i+1; j<=n; ++j)
while(a[j][i]) {
int tmp=a[i][i]/a[j][i];
for(int k=1; k<=n; ++k)a[i][k]=Mod(a[i][k]-a[j][k]*tmp%mod+mod);
for(int k=1; k<=n; ++k)a[i][k]^=a[j][k]^=a[i][k]^=a[j][k];
opt=-opt;
}
for(int i=1; i<=n; ++i)ans=a[i][i]%mod*ans%mod;
return (ans*opt%mod+mod)%mod;
}
signed main() {
n=read(),mod=read();
for(int i=1; i<=n; ++i)for(int j=1; j<=n; ++j)a[i][j]=read();
cout<<Work(n);
return 0;
}