题目传送门

题目的提示已经非常明显了,可以先生成回文数再判断质数,因为生成回文数的复杂度较小。判断质数用了之前学到的那种做法。

其实可以用一些比较优秀的筛质数的方法,再判断回文数。

 /*
ID: Starry21
LANG: C++
TASK: numtri
*/
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 1005
#define ll long long
#define INF 0x3f3f3f3f
int a,b;
bool pd(int x)
{
if(x==) return ;
if(x==||x==) return ;
if(x%!=&&x%!=) return ;
int s=sqrt(x);
for(int i=;i<=s;i+=)
if(x%i==||x%(i+)==)
return ;
return ;
}
int main()
{
//freopen("numtri.in","r",stdin);
//freopen("numtri.out","w",stdout);
scanf("%d %d",&a,&b);
if(a<)
{
if(a<=) puts("");
if(a<=) puts("");
if(a<=) puts("");
if(a<=) puts("");
}
if(a<=) puts("");
if(a<)
{
for(int i=;i<=;i+=)
for(int j=;j<=;j++)
{
int t=i*+j*+i;
if(pd(t)&&a<=t&&t<=b)
printf("%d\n",t);
}
}
if(a<)
{
for(int i=;i<=;i+=)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
{
int t=i*+j*+k*+j*+i;
if(pd(t)&&a<=t&&t<=b)
printf("%d\n",t);
}
}
if(a<)
{
for(int i=;i<=;i+=)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
for(int q=;q<=;q++)
{
int t=i*+j*+k*+q*+k*+j*+i;
if(pd(t)&&a<=t&&t<=b)
printf("%d\n",t);
}
}
return ;
}

Code

写法比较暴力,基本上参照USACO的提示。

可以知道如果回文数的位数是偶数,那么一定是合数,因为它能够被$11$整除(奇数位的和与偶数位的和是相等的)

当然,也可以打表,$O(1)$查询(误)。

#include<cstdio>
const int num=;
const int p[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
int a,b;
int main()
{
scanf("%d %d",&a,&b);
for(int i=;i<=num;i++)
if(p[i]>=a&&p[i]<=b)
printf("%d\n",p[i]);
return ;
}
/*#include<cstdio>
#include<cmath>
using namespace std;
int a,b;
bool check(int x)
{
if(x==1) return 0;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
bool pd(int x)
{
int t=x,cnt=0,res=0;
while(t)
{
res=res*10+t%10;
t/=10;
cnt++;
}
if(cnt%2==0||res!=x) return 0;
return 1;
}
int main()
{
int tot=0;
freopen("1.txt","w",stdout);
//scanf("%d %d",&a,&b);
for(int i=5;i<=100000000;i++)
if(pd(i))
if(check(i))
{
printf("%d,",i);
tot++;
}
printf("\n%d\n",tot);
return 0;
}*/

最新文章

  1. 初学seaJs模块化开发,利用grunt打包,减少http请求
  2. 【转】Checkpoint--与lazy writer区别
  3. JS-制作网页特效——选项卡效果(水平,点击)
  4. svn提交时强制添加注释
  5. (DFS)hdoj1241-Oil Deposit
  6. Linux中的常见配置文件
  7. 软硬结合的可穿戴式app
  8. Kinect for windows 破解 一,简单的体感超级玛丽
  9. LoadRunner入门(二)
  10. Java进阶(十七)ArrayList与LinkedList的区别
  11. 接入渠道SDK时出现乙方SDK回调不起作用
  12. android 可以精确到秒级的时间选择器
  13. [VS2008] 安装 AnkhSVN 后,选项中选择它,Pending Changes 窗口一闪而过,源代码管理工具自动跳回 【None】
  14. WP10的一点小问题
  15. CS小分队第二阶段冲刺站立会议(5月29日)
  16. Chat Order (map映射)
  17. npm安装及webpack打包小demo
  18. 调整home和根分区大小
  19. effective C++ 条款25 swap
  20. Shell编程之for和select循环

热门文章

  1. UML(Rational Rose)安装教程【载百度经验】
  2. fetch 写法
  3. [深度学习] pytorch学习笔记(4)(Module类、实现Flatten类、Module类作用、数据增强)
  4. jquery type属性 语法
  5. poj 3320 jessica&#39;s Reading PJroblem 尺取法 -map和set的使用
  6. java和python实现一个加权SlopeOne推荐算法
  7. Spring Boot教程(二十五)返回JSON格式
  8. 「CEOI2008」order
  9. JAVA源文件中可以包含多个类
  10. 通过Flink实现个推海量消息数据的实时统计