【题目链接】

OpenJudge NOI 1.13 11:回文素数

【题目考点】

1. 函数

2. 质数

3. 回文数

【解题思路】

输入的数字n可以达到9位数字,枚举判断每个数字是否是回文数与质数,复杂度会过高。
可以先构造出n位数字所有可能的回文数,以下有两种构造回文数字的方法:
方法1:对于一个任意的x位数字,将x的倒序数字接在原数字x的后面,就可以构造出一个2x位的回文数。

例:数字123可以构造出123321。数字56可以构造出5665

方法2:将x的倒序数字接在原数字x的后面,并重合一位数字,就可以构造出一个2x-1位的回文数。

例:数字123可以构造出12321。数字56可以构造出565
反过来想,一个n位的回文数字,
如果n是偶数,那么遍历所有n2\frac{n}{2}2n​位的整数,用方法1可以构造出所有n位的回文数。
如果n是奇数,那么遍历所有n+12\frac{n+1}{2}2n+1​位的整数,用方法2可以构造出所有n位的回文数。

构造出所有n位数字的回文数,依次判断每个回文数字是否是质数,如果是,则将数字填充到数组中。
最后输出数组长度及数组的内容。(这一步可以使用vector)

【题解代码】

解法1:填充数组

#include<bits/stdc++.h>
using namespace std;
#define N 100005
int rev(int x)//得到x的逆序数字
{int num = 0;//y:x的逆序数字 for(int a = x; a > 0; a /= 10)num = num*10+a%10;return num;
}
bool isPrime(int n)//判断n是否是质数
{if(n < 2)return false;for(int i = 2; i <= sqrt(n); ++i){if(n%i == 0)return false;}return true;
}
int main()
{int n, d, x, y, num, mi, mx;//d:用于构造回文数的原数字位数 int a[N], ai = 0;//a:保存既是回文数又是质数的数字 ai:数字个数 cin >> n;if(n%2 == 0)d = n/2;elsed = (n+1)/2;mi = pow(10, d-1);//d位数最小值,为10^{d-1}mx = 10*mi;//d位数最大值+1,为10^d for(x = mi; x < mx; ++x)//x:用于构造回文数的原数字 {y = rev(x);//y:x是逆序数字if(n%2 == 0)num = x*mx+y;//构造2d位的回文数:x*10^d+yelsenum = x/10*mx+y;//构造2d-1位的回文数:x/10*10^d+yif(isPrime(num))a[++ai] = num;}cout << ai << endl;for(int i = 1; i <= ai; ++i)cout << a[i] << ' ';return 0;
}

解法2:使用vector

#include<bits/stdc++.h>
using namespace std;
int rev(int x)//得到x的逆序数字
{int num = 0;//y:x的逆序数字 for(int a = x; a > 0; a /= 10)num = num*10+a%10;return num;
}
bool isPrime(int n)//判断n是否是质数
{if(n < 2)return false;for(int i = 2; i <= sqrt(n); ++i){if(n%i == 0)return false;}return true;
}
int main()
{int n, d, x, y, num, mi, mx;//d:用于构造回文数的原数字位数 vector<int> vec;//保存既是质数又是回文数的数字 cin >> n;if(n%2 == 0)d = n/2;elsed = (n+1)/2;mi = pow(10, d-1);//d位数最小值,为10^{d-1}mx = 10*mi;//d位数最大值+1,为10^d for(x = mi; x < mx; ++x)//x:用于构造回文数的原数字 {y = rev(x);//y:x是逆序数字if(n%2 == 0)num = x*mx+y;//构造2d位的回文数:x*10^d+yelsenum = x/10*mx+y;//构造2d-1位的回文数:x/10*10^d+yif(isPrime(num))vec.push_back(num);}cout << vec.size() << endl;for(int i = 0; i < vec.size(); ++i)cout << vec[i] << ' ';return 0;
}

OpenJudge NOI 1.13 11:回文素数相关推荐

  1. openjudge 1.13.11 回文素数

    OpenJudge - 11:回文素数 解题思路(70分): 1.由于数据量比较大,所以采用埃式筛选法来筛选素数 2.确定最小值和最大值,min=pow(10,n-1),max=pow(10,n) 3 ...

  2. OpenJudge NOI 1.7 34:回文子串

    [题目链接] OpenJudge NOI 1.7 34:回文子串 [题目考点] 1. 字符串 2. 枚举 [解题思路] 假设字符串长为len,先枚举长为2的回文子串,再枚举长为3的回文子串,...,最 ...

  3. 信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数

    [题目链接] ybt 1411:区间内的真素数 OpenJudge NOI 1.13 23:区间内的真素数 [题目考点] 1. 质数 2. 数字拆分 [解题思路] 设函数判断一个数是否是质数 设函数求 ...

  4. leetcode —— 866. 回文素数

    求出大于或等于 N 的最小回文素数. 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数. 例如,2,3,5,7,11 以及 13 是素数. 回顾一下,如果一个数从左往右读与从 ...

  5. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开

    6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...

  6. Java黑皮书课后题第6章:**6.26(回文素数)回文素数是指一个数同时为素数和回文数。编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开

    6.26(回文素数)回文素数是指一个数同时为素数和回文数.编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开 题目描述与运行示例 代码 题目描述与运行示例 6.26(回文素数) ...

  7. NUC1214 回文素数

    回文素数 时间限制: 1000ms 内存限制: 65536KB 问题描述 151 是一个回文素数,因为它既是一个素数又是回文数(回文数是指一个数 从左到右 和 从右到左 读的结果一样). 试写一个程序 ...

  8. NUC1214 回文素数【回文+素数】

    回文素数 时间限制: 1000ms 内存限制: 65536KB 问题描述 151 是一个回文素数,因为它既是一个素数又是回文数(回文数是指一个数 从左到右 和 从右到左 读的结果一样). 试写一个程序 ...

  9. 回文素数(杭电OJ,不喜欢这个题)

    Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 ...

最新文章

  1. 18怎么确定板子形状_板绘怎么画线条排线?板绘小白画线不稳怎么办?
  2. mysql root情况
  3. 【ABAP】模式(Pattern)创建与使用
  4. 真给力!蚂蚁金服工程师总结的400道前端面试题提供下载
  5. IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输?
  6. 武汉计算机985211大学有哪些,武汉985211大学有哪些 武汉985211大学有什么
  7. Shift键关闭大小写
  8. 【pyqt5】 读取numpy arrray 显示图片
  9. easyui 修改单元格内容_初学Excel办公软件快速修改文字的方法
  10. Ubuntu版本更新一路走来:朕就是这样的汉子
  11. WinForm 清空界面控件值的小技巧
  12. rest风格使用两个变量_SpringBoot2.x系列教程|构建RESTful风格的API接口
  13. 第6节 蒙特卡罗模拟计算欧式期权价格
  14. 嵌入式Linux设置开机自动运行程序(基于BusyBox init)
  15. 爬虫爬取招聘信息并进行数据分析
  16. 每周读书#11 - 等一朵花开
  17. xshell、CRT上使用vbscript更高效连接定位到服务器以及目录、数据库
  18. 雷电模拟器桥接模式不显示网卡,4版本不能设置代理
  19. 电子商务网站一般架构有哪些
  20. css引入本地字体文件,关于css中引入字体文件

热门文章

  1. Kubernetes CKS【24】---System Hardening - Kernel Hardening Tools(seccomp)
  2. wlacm 珍珠BEAD 题解
  3. python显示图片不连续_Python 图片连接(不重叠)
  4. 小白学习电脑配件常识干货
  5. Android异常篇 Gradle项目同步失败,需要修复项目。同时app图标有红叉,无法正常运行
  6. (P36-P39)右值和右值引用、右值引用的作用以及使用、未定引用类型的推导、右值引用的传递
  7. 不完全免疫算法简介DMMO--AIS学习笔记3
  8. cindy什么意思中文(cindy英语怎么读什么意思)
  9. java 字符串格式替换_[Java] - 格式字符串替换方法
  10. 参与360私有化的公司股价暴涨 多家借壳公司却遭遇政策难题