QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#836263 | #21608. 行列式 | luqyou | RE | 0ms | 0kb | C++14 | 1.4kb | 2024-12-28 17:44:18 | 2024-12-28 17:44:27 |
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define fi first
#define sc second
#define pii pair<int,int>
#define pb push_back
#define umap unordered_map
#define mset multiset
#define pq priority_queue
#define ull unsigned long long
#define i128 __int128
const int maxn=100+10;
const int mod=998244353;
int n,res,a[maxn][maxn];
int quickpow(int x,int y){
int p=1;
for(int i=y;i;i>>=1) p=(p*((i&1)?x:1))%mod,x=(x*x)%mod;
return p;
}
int inv(int x){
return quickpow(x,mod-2);
}
void solve(){
cin>>n,res=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cin>>a[i][j];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[j][i]){
swap(a[j],a[i]),res*=-1;
break;
}
}
if(!a[i][i]) return cout<<0<<endl,void();
res=(res*a[i][i])%mod;
for(int j=i+1;j<=n;j++){
if(a[j][i]){
int val=inv(a[i][i])*a[j][i]%mod;
for(int k=i;k<=n;k++) a[j][k]=(a[j][k]-a[i][k]*val%mod+mod)%mod;
}
}
}
cout<<(res+mod)%mod<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t=1;
// cin>>t;
while(t--) solve();
return 0;
}
/*
Samples
input:
output:
THINGS TODO:
检查freopen,尤其是后缀名
检查空间
检查调试语句是否全部注释
*/
詳細信息
Test #1:
score: 0
Runtime Error
input:
494 507979999 844753235 308697058 577366689 725069158 935333779 504374900 25818576 590205152 640101368 622693010 938297920 872742027 301114974 734834637 556531110 842083217 975440662 921805913 100862321 393656903 213191224 795146059 30475198 812681603 711143306 28681751 642978178 605226383 94538558 ...