博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 1.5 Prime Palindromes(枚举)
阅读量:5340 次
发布时间:2019-06-15

本文共 3386 字,大约阅读时间需要 11 分钟。

本来想筛选素数的。。。交了之后发现复杂度也太高了。。。可耻的看了一下hint,然后就各种for枚举了每一位了。.。

1 /*  2 ID: cuizhe  3 LANG: C++  4 TASK: pprime  5 */  6 #include 
7 #include
8 #include
9 #include
10 using namespace std; 11 #define N 1000001 12 bool p[N]; 13 int prim[100000],num; 14 int judge(int x) 15 { 16 int i; 17 for(i = 1;i <= num-1;i ++) 18 { 19 if(prim[i] > x) 20 break; 21 if(x%prim[i] == 0) 22 return 0; 23 } 24 return 1; 25 } 26 int main() 27 { 28 int i,j,k,u; 29 long long t,a,b; 30 freopen("pprime.in","r",stdin); 31 freopen("pprime.out","w",stdout); 32 scanf("%lld%lld",&a,&b); 33 for(i = 2; i <= N; i ++) 34 { 35 if(!p[i]) 36 { 37 for(j = i+i; j <= N; j += i) 38 { 39 p[j] = 1; 40 } 41 } 42 } 43 num = 1; 44 for(i = 2;i <= N;i ++) 45 { 46 if(!p[i]) 47 prim[num++] = i; 48 } 49 for(i = 1;i <= 9;i += 2)//一位 50 { 51 if(!p[i]&&i >= a&&i <= b) 52 printf("%d\n",i); 53 } 54 for(i = 1;i <= 9;i += 2)//两位 55 { 56 if(!p[i*10+i]&&i*10+i>=a&&i*10+i<=b) 57 printf("%d\n",i*10+i); 58 } 59 for(i = 1;i <= 9;i += 2)//三位 60 { 61 for(j = 0;j <= 9;j ++) 62 { 63 if(!p[i*100+j*10+i]&&i*100+j*10+i>=a&&i*100+j*10+i<=b) 64 printf("%d\n",i*100+j*10+i); 65 } 66 } 67 for(i = 1;i <= 9;i += 2)//四位 68 { 69 for(j = 0;j <= 9;j ++) 70 { 71 if(!p[i*1000+j*100+10*j+i]&&i*1000+j*100+10*j+i>=a&&i*1000+j*100+10*j+i<=b) 72 printf("%d\n",i*100+j*100+10*j+i); 73 } 74 } 75 for(i = 1;i <= 9;i += 2)//五位 76 { 77 for(j = 0;j <= 9;j ++) 78 { 79 for(k = 0;k <= 9;k ++) 80 { 81 t = i*10000+i+1000*j+10*j+k*100; 82 if(!p[t]&&t>=a&&t<=b) 83 printf("%lld\n",t); 84 } 85 } 86 } 87 for(i = 1;i <= 9;i += 2)//六位 88 { 89 for(j = 0;j <= 9;j ++) 90 { 91 for(k = 0;k <= 9;k ++) 92 { 93 t = i*100000+i+10000*j+10*j+k*1000+k*100; 94 if(!p[t]&&t >= a&&t <= b) 95 printf("%lld\n",t); 96 } 97 } 98 } 99 for(i = 1;i <= 9;i += 2)//七位100 {101 for(j = 0;j <= 9;j ++)102 {103 for(k = 0;k <= 9;k ++)104 {105 for(u = 0;u <= 9;u ++)106 {107 t = 1000000*i+i+100000*j+10*j+10000*k+k*100+1000*u;108 if(judge(t)&&t >= a&&t <= b)109 printf("%lld\n",t);110 }111 }112 }113 }114 for(i = 1;i <= 9;i += 2)//八位115 {116 for(j = 0;j <= 9;j ++)117 {118 for(k = 0;k <= 9;k ++)119 {120 for(u = 0;u <= 9;u ++)121 {122 t = 10000000*i+i+1000000*j+10*j+100000*k+k*100+10000*u+1000*u;123 if(judge(t)&&t >= a&&t <= b)124 printf("%lld\n",t);125 }126 }127 }128 }129 return 0;130 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/11/02/2751539.html

你可能感兴趣的文章
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
like tp
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Django之Models
查看>>
Linux 的 date 日期的使用
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>