比赛 2025暑期集训第7场 评测结果 AWAAWWWWWA
题目名称 填数 最终得分 40
用户昵称 李金泽 运行时间 0.023 s
代码语言 C++ 内存使用 3.64 MiB
提交时间 2025-08-11 17:26:51
显示代码纯文本
/*#include<cstdio>
#include<cstdlib>
#include<vector>
#define N 12
using namespace std;
int n,p[105],cnt,a[N][N];bool vis[2*N*N],b[N*N];
vector<int>v[N][N];
void shai(){
	for(int i=2;i<=2*n*n;i++)
	{
		if(!vis[i])p[++cnt]=i;
		for(int j=1;j<=cnt&&i*p[j]<=2*n*n;j++)
		{
			vis[i*p[j]]=1;
			if(!(i%p[j]))break;
		}
	}
}
bool dfs(int x,int y)
{
	if(x>n)return 1;
	if(x>1&&y>1)for(int i=0;i<v[a[x-1][y]][a[x][y-1]].size();i++)
	{
		if(b[v[a[x-1][y]][a[x][y-1]][i]])continue;
		b[a[x][y]=v[a[x-1][y]][a[x][y-1]][i]]=1;
		if(y<n)if(dfs(x,y+1))return 1;
		if(y==n)if(dfs(x+1,1))return 1;
		b[a[x][y]]=0;
	}
	else if(x==1)for(int i=2;p[i]-a[x][y-1]<=n*n;i++)
	{
		if(b[p[i]-a[x][y-1]])continue;
		b[a[x][y]=p[i]-a[x][y-1]]=1;
		if(y<n)if(dfs(x,y+1))return 1;
		if(y==n)if(dfs(x+1,1))return 1;
		b[a[x][y]]=0;
	}
	else for(int i=2;p[i]-a[x-1][y]<=n*n;i++)
	{
		if(b[p[i]-a[x-1][y]])continue;
		b[a[x][y]=p[i]-a[x-1][y]]=1;
		if(y<n)if(dfs(x,y+1))return 1;
		if(y==n)if(dfs(x+1,1))return 1;
		b[a[x][y]]=0;
	}
	return 0;
}
int main(){
	scanf("%d",&n);
	shai();
	for(int i=1;i<=n*n;i++)
		for(int j=1;j<=n*n;j++)
			if(i^j)
				for(int k=2;k<=n*n;k++)
					if(i^k&&j^k&&!vis[i+k]&&!vis[j+k])
						v[i][j].push_back(k),
						v[j][i].push_back(k);
	a[1][1]=1;
	if(dfs(1,2))
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
			printf("\n");
		}
	else printf("NO");
	return 0;
} */
#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
	freopen("tianshu.in","r",stdin);freopen("tianshu.out","w",stdout);
    cin>>n;
    if(n==1||n==3)
    {
        puts("NO");
    }
    else if(n==2)
    {
        puts("1 2");
		puts("4 3");
    }
    else if(n==4)
    {
        puts("1 2 11 12");
        puts("4 9 8 5");
        puts("7 10 3 14");
        puts("6 13 16 15");
    }
    else if(n==5)
    {
        puts("1 2 3 4 7");
        puts("6 5 14 15 16");
        puts("13 24 23 8 21");
        puts("10 19 18 11 20");
        puts("9 22 25 12 17");
    }
    else if(n==6)
    {
		puts("1 2 3 8 9 4");
		puts("6 11 20 33 28 25");
		puts("5 36 23 14 15 22");
		puts("12 31 30 17 26 21");
		puts("7 16 13 24 35 32");
		puts("10 27 34 19 18 29");
    }
    else if(n==7)
    {
		puts("1 2 3 4 7 6 5");
		puts("12 17 14 15 16 25 18");
		puts("11 20 33 46 37 42 41");
		puts("8 21 40 43 36 47 32");
		puts("9 22 49 24 35 26 27");
		puts("10 19 48 23 38 45 34");
		puts("13 28 31 30 29 44 39");
    }
    else if(n==8)
    {
		puts("1 2 3 4 7 6 5 14");
		puts("12 17 20 27 34 25 18 23");
		puts("11 26 21 32 39 28 61 36");
		puts("8 15 46 51 58 31 48 35");
		puts("9 22 57 52 55 42 41 62");
		puts("10 19 40 49 54 47 56 45");
		puts("13 24 43 60 53 50 33 64");
		puts("16 37 30 29 44 59 38 63");
    }
    else if(n==9)
    {
		puts("1 2 3 4 7 6 5 8 9");
		puts("10 21 20 27 34 25 18 23 38");
		puts("13 40 33 26 45 28 19 24 35");
		puts("16 31 76 81 68 69 70 79 72");
		puts("15 22 51 56 71 80 57 52 37");
		puts("14 39 62 41 60 47 32 75 64");
		puts("17 44 65 48 49 54 77 74 63");
		puts("12 29 42 55 58 73 36 53 50");
		puts("11 30 67 46 43 66 61 78 59");
	}
    else if(n==10)
    {
		puts("1 2 3 4 7 6 5 8 9 10");
		puts("12 29 38 33 34 25 36 23 44 27");
		puts("11 30 59 68 45 28 43 24 35 26");
		puts("18 41 42 71 56 75 64 37 66 47");
		puts("13 48 19 60 53 98 93 100 91 90");
		puts("16 31 40 97 54 83 74 99 82 67");
		puts("15 22 49 52 55 96 77 80 57 46");
		puts("14 39 58 79 72 95 62 87 70 61");
		puts("17 50 51 88 85 78 89 92 81 76");
		puts("20 21 32 69 94 73 84 65 86 63");

    }
    return 0;
}