回文质数【题目链接】

始终要记得凌云壮flag(真香)

说是个搜索,其实感觉更像是一个暴力;


这个题的难度并不是特别大,因为下面的提示太明显了qwq,(而且之前培训也讲过)首先是构造回文数,构造回文数时,有以下几点优化:

优化1:对于一个回文数,若它的位数是偶数(1551,654456等),除11以外,其余所有的回文数都是11的倍数,所以在构造回文数时,只需要构造奇数位的回文数;

优化2:因为回文数第一位等于最后一位(个位),所以只有当第一位是奇数时才有可能是质数,否则一定会是2的倍数;

优化3:(其实不能算优化啦)对于5---100以内的数,既是回文数又是质数的只有5,7,11,因为我比较废,所以我是写出了三位回文数,五位回文数以及七位回文数这三种情况,然后因为数很多嘛,我们也不能全都枚举了(虽然好像也不会炸,亲测不会炸),反正就是不想多写两个for循环【吐舌】,然后在制造回文数的循环里加了两个判断语句;

构造回文数代码:

/*three*/
for(int i=;i<=;i+=)
for(int j=;j<=;j++){
if(i* + j* + i < a) continue;
hw[++cnt] = i* + j* + i;
if(hw[cnt] > b) {cnt--;break;}
} /*five*/
for (int d1 = ; d1 <= ; d1+=)
for (int d2 = ; d2 <= ; d2++)
for (int d3 = ; d3 <= ; d3++){
if(*d1 + *d2 +*d3 + *d2 + d1 < a) continue;
hw[++cnt] = *d1 + *d2 +*d3 + *d2 + d1;
if(hw[cnt] > b) {cnt--;break;}
} /*seven*/
for(int d1 = ;d1 <= ;d1 += )
for(int d2 = ;d2 <= ;d2++)
for(int d3 = ;d3 <= ;d3++)
for(int d4 = ;d4 <= ;d4++){
if(d1* + d2* + d3* + d4* + d3* + d2* + d1<a) continue;
hw[++cnt] = d1* + d2* + d3* + d4* + d3* + d2* + d1;
if(hw[cnt] > b) {cnt--;break;}
}

接下来在构造出的回文数中判断质数,直接写了一个O(√n)的素数判定就好啦;

ac代码:

#include<bits/stdc++.h>

using namespace std;

int a,b;
int hw[]={,,},cnt=,str; bool pri(int k){
for(int i=;i<=sqrt(k);i++)
if(k%i==) return ;
return ;
} int main(){
scanf("%d %d",&a,&b);
/*three*/
for(int i=;i<=;i+=)
for(int j=;j<=;j++){
if(i*100 + j*10 + i < a) continue;//
hw[++cnt] = i* + j* + i;
if(hw[cnt] > b) {cnt--;break;}//
} /*five*/
for (int d1 = ; d1 <= ; d1+=){
for (int d2 = ; d2 <= ; d2++){
for (int d3 = ; d3 <= ; d3++){
if(10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1 < a) continue;//
hw[++cnt] = *d1 + *d2 +*d3 + *d2 + d1;
if(hw[cnt] > b) {cnt--;break;}//
}
}
} /*seven*/
for(int d1 = ;d1 <= ;d1 += )
for(int d2 = ;d2 <= ;d2++)
for(int d3 = ;d3 <= ;d3++)
for(int d4 = ;d4 <= ;d4++){
if(d1*1000000 + d2*100000 + d3*10000 + d4*1000 + d3*100 + d2*10 + d1<a) continue;//
hw[++cnt] = d1* + d2* + d3* + d4* + d3* + d2* + d1;
if(hw[cnt] > b) {cnt--;break;}//
} for(int i=;i</*cnt*/;i++)
if(hw[i]<a) str++;
/*for(int i=cnt;i>=str;i--)
if(hw[i]>b) cnt--;*/

for(int i=str;i<=cnt;i++)
if(pri(hw[i])) cout<<hw[i]<<endl;
}//两种不同的写法看习惯吧

end-

【洛谷p1217】回文质数的更多相关文章

  1. 洛谷 P1217 回文质数

    洛谷 P1217 回文质数 链接 https://www.luogu.org/problem/P1217 题目 题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 ...

  2. 洛谷P1217回文质数-Prime Palindrome回溯

    P1217 [USACO1.5]回文质数 Prime Palindromes 题意:给定一个区间,输出其中的回文质数: 学习了洛谷大佬的回溯写法,感觉自己写回溯的能力不是很强: #include &l ...

  3. 洛谷P1217 回文质数

    题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000 ...

  4. 洛谷 - P1217 - 回文质数 - 枚举

    https://www.luogu.org/problemnew/show/P1217 考虑暴力生成所有的回文数然后再判断是不是质数.注意个位的选择实际上只有4种.所以是 $4*10^3*10^3=4 ...

  5. 洛谷 P1015 回文数 Label:续命模拟QAQ

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  6. 洛谷 P1015 回文数

    #include<iostream> #include<cstdio> #include<cmath> #include<string> #includ ...

  7. 洛谷 P2010 回文日期

    Noip2016普及组T2 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月 份,最后2位代表日期 ...

  8. 洛谷 P2010 回文日期 题解

    P2010 回文日期 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日 ...

  9. 洛谷 - P3649 - 回文串 - 回文自动机

    https://www.luogu.org/problem/P3649 #include <bits/stdc++.h> using namespace std; typedef long ...

  10. 洛谷P1435 回文子串

    题目背景 IOI2000第一题 题目描述 回文词是一种对称的字符串.任意给定一个字符串,通过插入若干字符,都可以变成回文词.此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数. 比如 “A ...

随机推荐

  1. xxPay搭建步骤

    随着电子商务的发展,移动支付也走进我们的日常生活,就像很多基础业务,如物流.云平台一样,我们现在做什么都离不开她.正因为如此,支付是当下最活跃最前沿的话题,很多流行的技术最早用来实现支付,很多新的业务 ...

  2. python基础--3 列表

    #list类#li是list类的一个对象li=[11,22,33,22,44] #参数#在原来值最后进行整个作为元素追加 # li.append((11,22,33))#对列表本身进行操作,appen ...

  3. GDB学习笔记

    GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你 ...

  4. python学习笔记(七)模块

    一个python文件就是一个模块 1.标准模块 python自带的,不需要你安装的 2.第三方模块 需要安装,别人提供的,例:pip install radis 如果提示没有pip,把python下s ...

  5. OC中SEL,类别,继承,协议的使用

    1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明 ...

  6. Python 爬虫实战(1):分析豆瓣中最新电影的影评

    目标总览 主要做了三件事: 抓取网页数据 清理数据 用词云进行展示 使用的python版本是3.6 一.抓取网页数据 第一步要对网页进行访问,python中使用的是urllib库.代码如下: from ...

  7. 一道装呀(状压)DP

    generator 题目描述: 自己的数学太差了,居然没看出来和这两个是相同的: 啊啊啊: 所以装呀一下就好了: #include<iostream> #include<cstdio ...

  8. 匈牙利算法&模板O(mn)HDU2063

    #include<cstdio> #include<cstring> #define maxn 510 using namespace std; int k,g,b,x,y,a ...

  9. properties与yml之间的比较

    在Spring Cloud的配置文件中,发现使用yml与properties两种后缀的文件: 在application.properties中内容是这样的: server.port=8801eurek ...

  10. php面试专题---19、MySQL高可扩展和高可用考点

    php面试专题---19.MySQL高可扩展和高可用考点 一.总结 一句话总结: 要区别分区和分库分表,分区的话对用户是透明的,分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志 1 ...