hdu 1431 素数回文(暴力打表,埃托色尼筛法)
这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环。
这题肯定得打表,筛素数肯定用埃托色尼筛法(不好意思把大名鼎鼎的埃拉托色尼名字打错了,表打我)。
再看当你所找的回文数的位数为偶数时,有如下定理除11外所有偶数位数的回文数都能被11整除,所以所有偶数位数的回文都不是素数。
证明看如下(我手写的)

手机像素渣(凑活着吧)字丑也凑和着。
证完后我们在来说题目给的数据范围
所以当有8位时都不可以,所以数据缩小为999999;
那么下面就用素数筛法直接打表就行了。
然后再开个数组存回文的素数。
但是一开始我是用int开数组来筛素数的,不得不说傻逼了,内存爆到家了,我一开始很郁闷,这咋爆了呢,我靠,后来一想int型占4个字节,改成bool型的
哈哈,没爆,过了,bool型占一字节,所以内存果断下降4倍。我以前一直开int型的。我煞笔本来准备开longlong 的,估计要爆到姥姥家。
下面看代码:
1 #include<stdio.h>
2 bool a[9989900]={0};
3 int pp(int n);
4 int dd[1000];//素数回文数组本来以为会很大,但却很少,可以先打表看看。
5 int main(void)
6 {
7 int n,i,j,k,p,q;
8 a[0]=true;
9 a[1]=true;
10 for(i=2; i<4000; i++)
11 {
12 if(a[i]==0)
13 {
14 for(j=i; i*j<9989900; j++)
15 {
16 a[i*j]=true;
17 }
18 }
19 }//素数筛选暴力打表
20 int kk=0;
21 int t=0;
22 for(i=5;i<9989900;i++)
23 {
24 if(!a[i]&&pp(i))
25 {
26 dd[t++]=i;
27 }
28 }//选出回文加入数组
29
30 while(scanf("%d %d",&p,&q)!=EOF)
31 {for(i=0;i<t;i++)
32 {
33 if(dd[i]>=p&&dd[i]<=q)
34 {
35 printf("%d\n",dd[i]);
36 }
37 if(dd[i]>q)
38 {
39 break;
40 }
41 }
42 printf("\n");
43 }
44
45 return 0;
46
47
48 }
49
50 int pp(int n)//判断回文,正着和反着数值大小都一样
51 {
52 int i;
53 int y=0;int yy=n;int uu=1;
54 while(n>0)
55 {
56 y=y*10+n%10;
57 n=n/10;
58 }
59
60 if(y==yy)
61 {
62 return 1;
63 }
64 return 0;
65 }
hdu 1431 素数回文(暴力打表,埃托色尼筛法)的更多相关文章
- HDU 1431 素数回文 离线打表
题目描述:给定一个区间,将这个区间里所有既是素数又是回文数的数输出来. 题目分析:这题的这个数据范围比较大,达到了10^8级别,而且输入的数据有多组,又因为判断一个数是否是回文数貌似只有暴力判断,时间 ...
- F题 hdu 1431 素数回文
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others) M ...
- 题解报告:hdu 1431 素数回文
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说 ...
- HDU 1431 素数回文
有人问我这个问题. 个人感觉暴搜会TLE O(n*sqrt(n)).n=100000000:(推断素数用2~sqrt(n)+1 去除) 还是枚举好了. 枚举 1~10000,把他每一位存下来,回文数已 ...
- 素数回文(hdu1431)
素数回文 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 4N - 素数回文
xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 &l ...
- 素数回文(dfs,有bug)
素数回文 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 12--c完数/最大公约数/最小公倍数/素数/回文数
完数/最大公约数/最小公倍数/素数/回文数 2015-04-08 10:33 296人阅读 评论(0) 收藏 举报 分类: C/C++(60) 哈尔滨工业大学(8) 版权声明:本文为博主原创文章 ...
- HDU 5651 计算回文串个数问题(有重复的全排列、乘法逆元、费马小定理)
原题: http://acm.hdu.edu.cn/showproblem.php?pid=5651 很容易看出来的是,如果一个字符串中,多于一个字母出现奇数次,则该字符串无法形成回文串,因为不能删减 ...
随机推荐
- Oracle-连接多个字段
0.函数concat(A,B)作用:链接字符串 区别: Oracle中:CONCAT()只允许两个参数:(貌似可以内嵌) Mysql中:CONCAT()可以连接多个参数: 1.用||符号进行拼接 例子 ...
- 14-Reverse Integer
思路: 先判定符号,整型范围[-2^32,2^32] 取余除10操作,依次进行,越界返回0 Reverse digits of an integer. Example1: x = 123, retur ...
- 年底巩固下 CS 知识「GitHub 热点速览 v.21.49」
作者:HelloGitHub-小鱼干 期末到了!是时候来一波 CS 复习资料了,从本科基础知识开始到实用编程技术.本周 GitHub 热点趋势榜给你提供了最全的复习资料:清华的 CS 四年学习资料.W ...
- A Child's History of England.45
To forgive these unworthy princes was only to afford them breathing-time for new faithlessness. They ...
- 寻找pair
给定n个整数使其两两组合成一对pair,例如给定 1 ,2 可以组成的pair为(1,1),(1,2),(2,1),(2,2),然后在这些pair中寻找第k小的pair. 输入第一行包含两个数字,第一 ...
- Linux基础命令---nfsstat显示nfs信息
nfsstat nfsstat指令用来显示nfs客户端和服务器的活动信息. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 nfsstat ...
- 【Java多线程】线程池-ThreadPoolExecutor
ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSi ...
- 接下来一段时间会对大家进行网络通信的魔鬼训练-理解socket
引子 下一篇标题是<深入理解MQ生产端的底层通信过程>,建议文章读完之前.或者读完之后,再读一遍我之前写的<RabbitMQ设计原理解析>,结合理解一下. 我大学时流行过一个韩 ...
- 回溯——51. N皇后
这一题在我刚开始拿到的时候,是一点思路都没有的,只能先分析题目的要求,即queen之间的规则: 不能同行 不能同列 不能同斜线 不能同左斜 不能同右斜 同时发现,在寻找所有可能结果的穷举过程中,传入的 ...
- 前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?
传统混合移动App开发模式,通常会使用WebView作为桥接层,但随着iOS和Android应用商店审核政策日趋严格,有时会被错误判定为简单网页打包成App,上架容易遭到拒绝. 既然可能存在风险,那我 ...