求差错
查看原帖
求差错
77612
_扶笙_楼主2020/8/11 11:08

一直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;
}
2020/8/11 11:08
加载中...