一直30分,TLE后面7个点,求大佬差错
#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
long long f[510][1010];
long long M=(1e9)+7;
inline long long power(long long x,long long y){
long long ans=1;
while(y){
if(y&1) ans=ans*x%M;
x=x*x%M;
y>>=1;
}
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
for(register int i=1;i<=n;i++)
for(register int j=1;j<=n;j++)
cin>>f[i][j];
for(register int i=1;i<=n;i++)
f[i][i+n]=1;
for(register int i=1;i<=n;i++){
for(register int j=i;j<=n;j++)
if(f[j][i]){
for(register int k=1;k<=2*n;k++)
swap(f[i][k],f[j][k]);
break;
}
if(f[i][i]==0){
cout<<"No Solution\n";
return 0;
}
long long t=power(f[i][i],M-2);
for(register int j=i;j<=n+n;j++)f[i][j]=f[i][j]*t%M;
for(register int j=1;j<=n;j++){
if(i==j)continue;
long long r=f[j][i];
for(register int k=i;k<=n+n;k++)
f[j][k]=(f[j][k]-r*f[i][k]%M+M)%M;
}
}
for(register int i=1;i<=n;i++){
for(register int j=n+1;j<=n+n;j++) cout<<f[i][j]<<" ";
cout<<"\n";
}
return 0;
}