WA 18pts 求调(样例没过)
查看原帖
WA 18pts 求调(样例没过)
487397
Lagrange_i_f楼主2024/7/14 09:02
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e3+10,mod=1e9+7;
int a[N][N],n;
int Pow(int x,int n){
	if(x==0)return 0;
	if(n==0)return 1;
	int a=Pow(x,n/2);
	return a*a%mod*(n&1?x:1)%mod;
}
void print(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=2*n;j++)cout<<a[i][j]<<' ';
		cout<<'\n';
	}
}
void guess(){
	for(int i=1;i<=n;i++){
		int pos=i;
		for(int j=i+1;j<=n;j++)if(a[j][i]>a[pos][i])pos=j;
//		cout<<pos;
		if(!a[pos][i]){cout<<"No Solution";return ;}
		if(i!=pos)swap(a[i],a[pos]);
		int ks=Pow(a[i][i],mod-2);
		for(int j=1;j<=n;j++){
			if(j==i)continue;
			int t=a[j][i]*ks%mod;
			for(int k=1;k<=2*n;k++)a[j][k]=(a[j][k]-(a[i][k]*ks%mod)+mod)%mod;
		}
		for(int j=1;j<=2*n;j++)a[i][j]=a[i][j]*ks%mod;
	}
	for(int i=1;i<=n;i++){
		for(int j=n+1;j<=2*n;j++)cout<<a[i][j]<<' ';
		cout<<'\n'; 
	} 
	return ;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)cin>>a[i][j];
		a[i][n+i]=1;
	}
	guess();
	return 0;
}
2024/7/14 09:02
加载中...