题目链接:点击查看

题目大意:给出一个a和b,求出区间[a,b]中所有回文质数,回文质数指的是一个数既是回文数也是质数

题目分析:首先质数好判断,我们只需要用欧拉筛预处理打好表即可,判断回文数我们也只需要用一个函数O(lgn)的时间就可以判断,但a和b的范围高达1e8,1e8*lgn最大能到1e9,评测机肯定是顶不住的,这个时候我们该怎么办呢,这里我们需要补充一下关于回文质数的几个小性质吧:

  1. 偶数位的回文串必不可能是素数
  2. 偶数一定不是素数(废话)

我也不太会证明,但有了上面的第一个结论后,我们就可以直接将1e8的时间复杂度下降到了1e7,这样就能顺利AC了

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e7+100;int pri[N];bool vis[N];int cnt;void P()//欧拉线性筛
{vis[1]=true;for(int i=2;i<N;i++){if(!vis[i])pri[cnt++]=i;for(int j=0;j<cnt&&pri[j]*i<N;j++){vis[pri[j]*i]=true;if(i%pri[j]==0)break;}}
}bool check(int x)//O(lgn)判断回文数
{int ans1=x;int ans2=0;while(x){ans2=ans2*10+x%10;x/=10;}return ans1==ans2;
}int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);P();int a,b;scanf("%d%d",&a,&b);for(int i=a;i<=b;i++){if(i>=N)//剪枝,剪掉所有大于1e7的数break;if(!vis[i]&&check(i))printf("%d\n",i);}return 0;
}

洛谷 - P1217 [USACO1.5]回文质数 Prime Palindromes(欧拉线性筛+数论小知识)相关推荐

  1. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes 题解 C/C++

    知识点: 回文数有两种 一种是单数位数,abcba,一种是双数位数,abccba 而双数位数是质数的只有11,即偶位回文数全不是质数除了11:所以不需要枚举到1亿,到1千万就好了 以下几种方法供参考 ...

  2. 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes

    我就叫大家打表吧,自己也刚学会: 由于有些题目直接提交又会超时,所以打表是一个不错的解决方法. 对于回文质数而言,判断回文,判断质数就ok了 1.存入文件 #include<bits/stdc+ ...

  3. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindrome

    嗯... 这道题对于蒟蒻的我来说实在是TQL... 先看一下题:(题目链接:https://www.luogu.org/problemnew/show/P1217) 然后说一下我的做题过程吧: 一看到 ...

  4. P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表)

    P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表) 一:埃氏筛(时间复杂度--nloglogn) 重点:一个数x是合数,则它的倍数也是合数 //用埃氏筛生成 ...

  5. P1217 [USACO1.5]回文质数 Prime Palindromes 题解(来源:洛古)

    [USACO1.5]回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 151 是回 ...

  6. P1217 [USACO1.5]回文质数 Prime Palindromes——回文质数性质、打表

    [USACO1.5]回文质数 Prime Palindromes 题目描述 因为 151151151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151151151 是回文质数. ...

  7. P1217 [USACO1.5]回文质数 Prime Palindromes

    暴力输出5~1e8的回文质数 #include <bits/stdc++.h> using namespace std; int cnt; bool isprim(int x) //10^ ...

  8. 【素数】P1217 [USACO1.5]回文质数 Prime Palindromes

    https://www.luogu.com.cn/problem/P1217 考点:素数.回文.二分.打表 题意: 找出5到1e8的回文素数. 解法: 直接暴力遍历1亿次必定超时,可以用打表法... ...

  9. P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)

    技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...

最新文章

  1. 如何在notebook中的markdown中插入截取的图片_96编辑器教你如何在文章中插入图片、视频、音频!...
  2. Nexus学习笔记 -- 安装到运行
  3. zip伪加密做法及原理
  4. animate方法 jQuery中元素的创建 创建十个p标签 创建列表 动态创建列表
  5. linux下源码软件包的安装
  6. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇
  7. Python基础:函数的介绍及应用
  8. ASP.NET Core WebAPI控制器返回类型的最佳选项
  9. 《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型障碍物判定
  10. Linux 操作命令大全
  11. pg数据库游标的使用
  12. 用Java实现Md5加密工具类
  13. php中while什么意思,php while 循环是什么意思 - php完全自学手册 - php中文网手册
  14. linux系统amd驱动怎么安装教程,ubuntu amd显卡驱动安装教程
  15. 【无标题】如何做APP客户端数据埋点
  16. 《数学之美》——吴军#读书笔记
  17. linux版uTorrent安装手记
  18. php 文字水印换行,thinkPHP5图片加文字水印实现换行的方法
  19. jwplayer html插件,jw player(网页媒体播放器插件) v2017 最新版
  20. 运用深度学习技术检测转移性乳腺癌

热门文章

  1. 文件上传下载-准备上传页面
  2. MySQL高级最左前缀法则
  3. 往IOC 容器中添加组件的方式
  4. 数据库-日期计算-获取年月日
  5. 请使用日期时间相关的API,计算出一个人已经出生了多少天
  6. Docker 常见问题汇总
  7. excel转html放在tomcat,Excel转web!把excel在线打开??
  8. Tomcat 下构建 Web 应用时,常犯的一些通用错误
  9. Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月1日-1月6日)
  10. 企业运维笔试考题(1)