【CF1436B】Prime Square 题解
题意简介
要求构造一个由不大于 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
【CF1436B】Prime Square 题解的更多相关文章
- CF912E Prime Gift题解(搜索+二分答案)
CF912E Prime Gift题解(搜索+二分答案) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1314956 洛谷题目链接 $ $ CF题目 ...
- poj2689 Prime Distance题解报告
题目戳这里 [题目大意] 给定一个区间[L,R],求区间内的质数相邻两个距离最大和最小的. [思路分析] 其实很简单呀,很明显可以看出来是数论题,有关于质数的知识. 要注意一下的就是L和R的数据范围都 ...
- UVA 10924 Prime Words 题解
Prime Words A prime number is a number that has only two divisors: itself and the number one. Exampl ...
- POJ2689:Prime Distance——题解
http://poj.org/problem?id=2689 题目大意,给不超过int的l,r,其中r-l+1<=1000000,筛出其中的素数,并且求出相邻素数差值最大和最小的一对. ———— ...
- 洛谷 UVA12101 Prime Path 题解
一道经典的BFS 用四个for搜索四位就行了,只要能推出怎么只变4位中的一位就很水了 #include<iostream> #include<cstring> #include ...
- CF710C Magic Odd Square 题解
Content 构造出一个 \(n\times n\) 的矩阵,使得这个矩阵由 \(1\sim n^2\) 这些数字组成,并且这个矩阵的每行,每列,以及对角线的和都为奇数. 数据范围:\(1\leqs ...
- Codeforces Round #678 (Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1436 A. Reorder 题解 模拟一下这个二重循环发现每个位置数最终都只加了一次. 代码 #include <bi ...
- Project Euler 87 :Prime power triples 素数幂三元组
Prime power triples The smallest number expressible as the sum of a prime square, prime cube, and pr ...
- Project Euler:Problem 87 Prime power triples
The smallest number expressible as the sum of a prime square, prime cube, and prime fourth power is ...
随机推荐
- (数据科学学习手札95)elyra——jupyter lab平台最强插件集
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 jupyter lab是我最喜欢的编辑器,在过往 ...
- 写一个简单的 Linux Shell (C++)
这里可以找到代码 github.com/z0gSh1u/expshell 支持的特性 单条指令的执行 引号引起的参数(如 $ some_program "hello, world" ...
- 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)请自取
最近在读,附上网盘链接 复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1U6yFeZxz9uD6sSiu-Br06g 提取码:3Wt4
- vue项目工程中npm run dev 到底做了什么
1. npm install 安装了webpack框架中package.json中所需要的依赖 2.安装完成之后,需要启动整个项目运行,npm run 其实执行了package.json中的scrip ...
- Oracle学习(六)存储过程
一.简介 1.定义 所谓存储过程,就是一段存储在数据库中执行某块业务功能的程序模块. 它是由一段或者多段的PL/SQL代码块或者SQL语句组成的一系列代码块. 2.结构分析 create [or re ...
- django 3.1 序列化讲述
序列化Django对象¶ Django的序列化框架提供了一种将Django模型"翻译"为其他格式的机制.通常,这些其他格式将基于文本,并用于通过电线发送Django数据,但是序列化 ...
- Python练习题 032:Project Euler 004:最大的回文积
本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...
- RT Thread SPI设备 使用
后记: 之前,我把SPI的片选在Cubemx中配置成了SPI_NSS.现在我给它改为了GPIO_OUTPUT. 同时参考了别人的类似的一个操作无线模块(采用SPI设备驱动)的例子程序(清楚了RTT的 ...
- 使用SSM框架实现Sql数据导出成Excel表
SSM框架实现SQL数据导出Excel 思路 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互. 接着在相应的controller中编写导出功能方法. 方法体: ...
- IDM下载度盘文件
百度网盘是百度公司推出的一款个人云服务产品.百度网盘官方版操作简单,我们打开后就可以使用该软件来上传.下载文件等.不仅如此百度网盘软件还可以批量上传文件.支持断点传续等功能,重要的是上传的文件不会占用 ...