这题一直 WA 30,然而我已经和第三篇题解的代码对了好久,没有发现任何差错;甚至对拍还过了。
所以有没有人能帮帮这个菜鸡啊/kel
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxl=605,mod=1e9+7;
int read(){
int s=0,w=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') w=-w;ch=getchar();}
while (ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+(ch^'0');ch=getchar();}
return s*w;
}
int n;
int a[maxl][maxl];
int quick_power(int x,int y){
int res=1;
for (;y;y=y>>1,x=(x*x)%mod){
if (y&1) res=(res*x)%mod;
}
return res;
}
int ny(int ducati){return quick_power(ducati,mod-2);}
bool Guass_hls(){
for (int i=1;i<=n;i++){
int k=i;
for (int j=i+1;j<=n;j++){
if (a[j][i]>a[k][i]) k=j;
}
if (i!=k) swap(a[i],a[k]);
if (!a[i][i]){
puts("No Solution");
return false;
}
int val=ny(a[i][i]);
for (int j=1;j<=n;j++){
if (j==i) continue;
int di=(a[j][i]*val)%mod;
for (int k=i;k<=n*2;k++)
a[j][k]=((a[j][k]-di*a[i][k])%mod+mod)%mod;
}
for (int j=1;j<=2*n;j++) a[i][j]=(a[i][j]*val)%mod;
}
return true;
}
signed main(){
n=read();
for (int i=1;i<=n;i++){
for (int j=1;j<=2*n;j++){
if (j<=n) a[i][j]=read()%mod;
}
a[i][n+i]=1;
}
if (!Guass_hls()) return 0;
for (int i=1;i<=n;i++){
for (int j=n+1;j<=2*n;j++) cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;
}