luogu P1217 [USACO1.5]回文质数 Prime Palindromes x
P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;
输入输出格式
输入格式:
第 1 行: 二个整数 a 和 b .
输出格式:
输出一个回文质数的列表,一行一个。
输入输出样例
- 5 500
- 5
- 7
- 11
- 101
- 131
- 151
- 181
- 191
- 313
- 353
- 373
- 383
说明
Hint 1: Generate the palindromes and see if they are prime.
提示 1: 找出所有的回文数再判断它们是不是质数(素数).
Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.
提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。
题目翻译来自NOCOW。
USACO Training Section 1.5
产生长度为5的回文数:
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(处理回文数...)
}
}
}
思路:
如题。
代码:
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- const int N = 1e8 + ;
- const int M = 6e7;
- int a,b;
- int pd(int x)
- {
- if(x==||x==) return ;
- if(x%== || x==) return ;
- int j=;
- while(j<=sqrt(x)&&x%j!=) j+=;
- if(x%j==) return ;
- else return ;
- }
- void get_hui()
- {
- int num;
- int aa=a;
- while(aa<)
- {
- if(pd(aa) && aa>=a) printf("%d\n",aa);
- aa++;
- }
- for(int i=;i<=;i+=)
- {
- num=i*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- num=i*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- num=i*+j*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- for(int k=;k<=;k++)
- {
- num=i*+j*+k*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- for(int k=;k<=;k++)
- {
- num=i*+j*+k*+k*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- for(int k=;k<=;k++)
- {
- for(int w=;w<=;w++)
- {
- num=i*+j*+k*+w*+k*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- }
- }
- for(int i=;i<=;i+=)
- {
- for(int j=;j<=;j++)
- {
- for(int k=;k<=;k++)
- {
- for(int w=;w<=;w++)
- {
- num=i*+j*+k*+w*+w*+k*+j*+i;
- if(num>b) return;
- if(num>=a && pd(num)) printf("%d\n",num);
- }
- }
- }
- }
- }
- int main()
- {
- scanf("%d%d",&a,&b);
- get_hui();
- return ;
- }
luogu P1217 [USACO1.5]回文质数 Prime Palindromes x的更多相关文章
- P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)
技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...
- (函数)P1217 [USACO1.5]回文质数 Prime Palindromes
题解: 第一次: 算法复杂度过高,导致编译超时,需要优化 #include<stdio.h>#include<math.h>int a[100000001] = { 0 };i ...
- Java实现 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
import java.util.Scanner; public class Main { private static Scanner cin; public static void main(St ...
- [USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
随机推荐
- ssh远程登录过程中卡住
1.首先排查网络连通性,查看网络是否通畅,远程端口是否开放 2.查看服务器复制,cpu,内存负载是否过大 3.检查ssh配置,查看以下配置是否这样配置 UseDNS no GSSAPIAuthenti ...
- Java Mail 附件名太长导致接收端附件名解析出错
问题前提:公司需要往邮件中写 excle 文件,返送成功后发现文件格式有误(如:xxxx.bat 等文件后缀),但是有些文件又不会, 后来发现是由于文件名称太长所导致. 问题原因:java mail中 ...
- idea使用Vue的v-bind,v-on报错
参考解决在WebStorm中使用Vue的v-bind,v-on报错 File-->Settings-->Editor-->Inspections-->XML 把 Unbound ...
- Aliyun-Centos 7 LNMP安装(最新版LNMP)
linux装软件方式:1.源码安装:下载wget-->解压tar -zxvf -->配置 ./configure --->编译make -->安装 make install 2 ...
- linux系统管理基础知识
1.linux的安装配置 虚拟机安装 Linux安装和分区 IP地址的配置 ifup eth0,ifdoen eth0 关闭不常用的程序 关闭selinux 远程登录(多用户,多任务) 用户和角色划分 ...
- tensorflow学习笔记三----------基本操作
tensorflow中的一些操作和numpy中的很像,下面列出几个比较常见的操作 import tensorflow as tf #定义三行四列的零矩阵 tf.zeros([3,4]) #定义两行三列 ...
- git命令?
#文件及文件夹创建删除 mkdir 文件名称 (创建文件夹) touch 文件名称 (创建文件) rm -r 文件名称 (递归删除) rm -rf 文 ...
- go & Windows Service
相关库 https://godoc.org/golang.org/x/sys/windows/svc https://github.com/kardianos/service https://gith ...
- #define 宏实现函数功能可能存在的问题
#define 宏实现函数功能的问题 情形1 #define free_ptr(p) \ if(p) delete p; p = nullptr; 在调用free_ptr(p)的地方展开看这段代码: ...
- express热更新nodemon,自启动项目
一.说一下 每次修改文件,我们都需要重启服务器npm start,很麻烦,所以使用引入nodemon插件,解决这个问题,实现保存文件,即自启动刷新项目 二.直接开码 npm install nodem ...