USACO Prime Palindromes
2016-06-20 23:19
260 查看
马上进入chapter2了,很稳啊,刷水总是心情愉悦的,因为都能过。
虽说如此,这道还是看了下Hint才过的,毕竟太菜。
题意:求1e8以内某个区间上的回文素数。
做法:先generate所有回文数,再判是否素数。(一开始枚举1-1e8,判是否回文是否素,mdzz,这tm能过就有鬼了)generate只要枚举1-9999的数,偶位数倒一下拼起来,奇位数中间的数单独讨论即可。反正很EZ就是啦。
代码:
PS:看别人BLOG发现一个,偶位数的回文数整除11,所以除了11以外的偶位数回文数都是合数。
证明:对abc……cba来说,将之拆为A000……000A+B00……00B+C0……0C+……的形式。
每个数中间有偶数个0。Ax10^(2n+1)%11=Ax(-1)^(2n+1)%11=-A
A000……000A%11=-A+A=0
每个分量整除11,求和也整除11。
所以只需考虑奇位数回文数即可。
虽说如此,这道还是看了下Hint才过的,毕竟太菜。
题意:求1e8以内某个区间上的回文素数。
做法:先generate所有回文数,再判是否素数。(一开始枚举1-1e8,判是否回文是否素,mdzz,这tm能过就有鬼了)generate只要枚举1-9999的数,偶位数倒一下拼起来,奇位数中间的数单独讨论即可。反正很EZ就是啦。
代码:
/* ID: jlw44671 PROG: pprime LANG: C++ */ #include <cstdio> #include <iostream> #include <cstring> #include <queue> #include <algorithm> #include <cmath> using namespace std; bool judge[10500]; int prime[10500]; int pos; int a,b; int ans[1000000]; int cnt; bool judge2(int x) { for(int i=1;i<=pos;i++) { if(x%prime[i]==0&&x!=prime[i])return false; } return true; } int g1(int x) { int p=x; int q=0; int wei=0; while(x) { wei++; q*=10; q+=x%10; x/=10; } for(int i=1;i<=wei;i++) p*=10; return p+q; } int g2(int x) { int r=x%10; int p=x/10; x/=10; int wei=0; int q=0; while(x) { wei++; q*=10; q+=x%10; x/=10; } p=p*10+r; for(int i=1;i<=wei;i++) p*=10; return p+q; } int main() { freopen("pprime.in","r",stdin); freopen("pprime.out","w",stdout); memset(judge,true,sizeof(judge)); pos=0; for(int i=2;i<=10000;i++) { if(judge[i]) { prime[++pos]=i; for(int j=2;i*j<=10000;j++) { judge[i*j]=false; } } } scanf("%d %d",&a,&b); cnt=0; for(int i=1;i<=9999;i++) { int x=g1(i); if(judge2(x))ans[++cnt]=x; int y=g2(i); if(judge2(y))ans[++cnt]=y; } //printf("%d\n",cnt); sort(ans+1,ans+1+cnt); for(int i=1;i<=cnt;i++) { if(ans[i]>=a&&ans[i]<=b)printf("%d\n",ans[i]); } return 0; }
PS:看别人BLOG发现一个,偶位数的回文数整除11,所以除了11以外的偶位数回文数都是合数。
证明:对abc……cba来说,将之拆为A000……000A+B00……00B+C0……0C+……的形式。
每个数中间有偶数个0。Ax10^(2n+1)%11=Ax(-1)^(2n+1)%11=-A
A000……000A%11=-A+A=0
每个分量整除11,求和也整除11。
所以只需考虑奇位数回文数即可。
相关文章推荐
- lstm
- python下代码优化的一个例子
- 一步步追踪Dialog的创建流程(一)
- CallerInformation
- 2016-06-20-课程设计日志
- LNMP状态管理命令
- 非关系型数据库redis(一):Centos6.5安装Redis
- 集群负载均衡之lvs和keepalived
- 触摸事件传递与响应者链条
- css之transform属性
- HDU 5486 Difference of Clustering 图论
- 1047. 编程团体赛(20) PAT 乙级
- LNMP安装了哪些软件?安装目录在哪?
- KNN算法在保险业精准营销中的应用
- Oracle 下载安装教程
- C++对C的增强
- php pod
- django pdb
- C++Primer 第6章笔记整理
- R语言的基本操作