比赛 2025暑期集训第7场 评测结果 WTAAAAAAAA
题目名称 填数 最终得分 80
用户昵称 梧叶已同秋雨去 运行时间 3.452 s
代码语言 C++ 内存使用 3.68 MiB
提交时间 2025-08-11 14:58:35
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,t,f[15][15],k[1005];
bool bb[10005];
bool chen(int x){
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			return 0;
		}
	}return 1;
}
void zhao(){
	for(int i=2;i<=1005;i++){
		if(chen(i)){
			bb[i]=1; 
		}
	}
}
bool dfs(int a,int b){
	if(b==n+1&&a!=n){
		b=1;
		a++;
	}
	if(a==n&&b==n+1){	
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=n;j++){
//				cout<<f[i][j]<<" ";
//			}cout<<"\n";
//		}
		return 1;
	} 
	for(int i=2;i<=t;i++){
		//cout<<a<<" "<<b<<" "<<f[a-1][b]<<" "<<f[a][b-1]<<" "<<i<<endl;
		if(k[i]==1){
			continue;
		}
		if(a==1&&bb[f[a][b-1]+i]==1){
			f[a][b]=i;
			k[i]=1;
			if(dfs(a,b+1))return 1;
			k[i]=0; 
		}else if(b==1&&bb[f[a-1][b]+i]==1){
			f[a][b]=i;
			k[i]=1;
			if(dfs(a,b+1))return 1;
			k[i]=0; 
		}else if(bb[f[a-1][b]+i]==1&&bb[f[a][b-1]+i])	{
			f[a][b]=i;
			k[i]=1;
			if(dfs(a,b+1))return 1;
			k[i]=0; 
		}
	}
	return 0;
}
int main(){
	freopen("tianshu.in","r",stdin);
	freopen("tianshu.out","w",stdout);
	cin>>n;
	t=n*n;
	zhao();
	f[1][1]=1;
	if(dfs(1,2)){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				cout<<f[i][j]<<" ";
			}cout<<"\n";
		}
	}else{
		cout<<"NO";
	}
	return 0;
}