原题链接

题意简介

要求构造一个由不大于 1e5 的非负数构成的正方形矩阵,矩阵的每个元素不是质数,但每一行、每一列的数字的和都是质数。

思路分析

看到样例二,我们知道数字可以重复。

于是,我们很容易推出,如果 n 是个质数,那直接输出 n*n 个 1 就行了。

那么假如 n 不是质数呢?

我们很容易想到,如果存在某个非质数的非负数 x 使得 (n-1)*1+x 是个质数的话,那么只需要把这个 x 安在其中一条对角线上、其余位置全部放 1 就完事了。

于是打个暴力验证一下,发现这个 x 是必定存在的。

所以直接预处理出每个 n 对应的 x,然后读入的时候输出对应的矩阵就行了。

代码库

验证

#include <cstdio>
#include <cstring>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define Rep(i,a,b) for(int i=a;i>=b;i--)
const int M=2e5,N=2e4+5;
bool vis[M+5]; int prim[N],cc;
int main(){
vis[0]=vis[1]=1;
rep(i,2,M){
if(!vis[i]) prim[++cc]=i;
rep(j,1,cc){
if(prim[j]*i>M) break;
vis[prim[j]*i]=1;
if(i%prim[j]==0) break;
}
}
bool f[101]; memset(f,0,sizeof(f));
rep(i,2,100){
Rep(j,cc,1){
if(prim[j]<(i-1)) break;
if(prim[j]-(i-1)>(M>>1)) continue;
if(vis[prim[j]-(i-1)]){ f[i]=1; break; }
}
}
rep(i,2,100) if(!f[i]) f[0]=1,printf("Err in %d\n",i);
if(!f[0]) printf("Nice!\n");
return 0;
}

题解

#include <cstdio>
#include <cstring>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define Rep(i,a,b) for(int i=a;i>=b;i--)
const int M=2e5,N=2e4+5;
bool vis[M+5]; int prim[N],cc,t,n,f[101];
void pre_work(){
vis[0]=vis[1]=1;
rep(i,2,M){
if(!vis[i]) prim[++cc]=i;
rep(j,1,cc){
if(prim[j]*i>M) break;
vis[prim[j]*i]=1;
if(i%prim[j]==0) break;
}
}
rep(i,2,100){
Rep(j,cc,1){
if(prim[j]<(i-1)) break;
if(prim[j]-(i-1)>(M>>1)) continue;
if(vis[prim[j]-(i-1)]){ f[i]=prim[j]-(i-1); break; }
}
}
}
int main(){
pre_work(); scanf("%d",&t);
while(t--){
scanf("%d",&n);
rep(i,1,n){
rep(j,1,n){
if(i==j) printf("%d ",f[n]);
else printf("1 ");
}
putchar('\n');
}
}
return 0;
}

END

最新文章

  1. 常见博客API
  2. 自定义样式的select下拉框深入探索
  3. 邻接矩阵实现Dijkstra算法以及BFS与DFS算法
  4. MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!
  5. 双方都在线,qq总是离线发文件
  6. Gamma校正及其OpenCV实现
  7. python运维开发(十七)----jQuery续(示例)web框架django
  8. LINUX 网络编程 原始套接字
  9. C#编辑基础笔记
  10. Inno Setup入门(七)&mdash;&mdash;提供安装语言选项
  11. JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
  12. C语言中结构体(struct)的几种初始化方法
  13. wxpython绘制音频
  14. 四.awk、sde深度讲解
  15. react编码规范
  16. antv g6
  17. python全栈开发 * 29知识点汇总 * 180712
  18. 一个JavaBean和DTO转换的优秀案例
  19. uboot-jiuding 下主Makefile详解
  20. java套接字(socket)实例

热门文章

  1. python的循环结构
  2. python中的运动控制函数
  3. netty---sync,await
  4. 6.Exchanger-交换机
  5. 【征文活动】为自己发“声” —— 声网RTC征文大赛在园子里征稿
  6. 手撸Mysql原生语句--多表
  7. 跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义
  8. Linux Wait Queue 等待队列
  9. 详解SVM模型——核函数是怎么回事
  10. 李宏毅老师机器学习第一课Linear regression