萌新自闭求助
查看原帖
萌新自闭求助
87064
ducati楼主2021/9/5 21:38

这题一直 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;
}
2021/9/5 21:38
加载中...