CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

在这里插入图片描述

题目描述

因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 151 是回文质数。

写一个程序来找出范围 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 , 000 ) [a,b] (5 \le a < b \le 100,000,000) [a,b](5a<b100,000,000)(一亿)间的所有回文质数。

输入格式

第一行输入两个正整数 a a a b b b

输出格式

输出一个回文质数的列表,一行一个。

样例 #1

样例输入 #1

5 500

样例输出 #1

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 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;//(处理回文数...)}}}

66分代码

#include<bits/stdc++.h>
using namespace std;
/*思路:(70分:部分测试点超时) 
函数1:判断一个数是否是质数
函数2:判断一个数是否是回文数 
*/
int a,b;
//判断一个数是否是质数
bool isPrime(int x){if(x<=1) return false;for(int i=2;i<=sqrt(x);i++){if(x%i==0) return false;}return true;
}
//判断一个数是否是回文数
bool isHw(int x){int tmp=x;//记录x的值用于过程运算 int y=0;while(tmp){y=y*10+tmp%10;tmp/=10;}if(x==y) return true;else return false;
}
int main(){cin>>a>>b;for(int i=a;i<=b;i++){if(isPrime(i) && isHw(i)){cout<<i<<endl;}}return 0;
} 

88分代码

#include<bits/stdc++.h>
using namespace std;
/*思路:(88分:部分测试点超时) 
函数1:判断一个数是否是质数
函数2:判断一个数是否是回文数 
---优化思路:先判断是否是回文,再判断是否是质数---- 
---因为质数判断的函数时间复杂度较高,而回文判断的函数时间复杂度较低---- 
*/
int a,b;
//判断一个数是否是质数
bool isPrime(int x){if(x<=1) return false;for(int i=2;i<=sqrt(x);i++){if(x%i==0) return false;}return true;
}
//判断一个数是否是回文数
bool isHw(int x){int tmp=x;//记录x的值用于过程运算 int y=0;while(tmp){y=y*10+tmp%10;tmp/=10;}if(x==y) return true;else return false;
}
int main(){cin>>a>>b;for(int i=a;i<=b;i++){if(isHw(i) && isPrime(i)){//优化的关键修改在这儿 cout<<i<<endl;}}return 0;
} 

100分代码

#include<bits/stdc++.h>
using namespace std;
/*思路:(100分)        
---新增优化:减少b的值--- >b在10^7到10^8之间时,位数是偶数位,不可能为回文数素数>除了11以外,一个数的位数是偶数的话,不可能为回文数素数。>如果一个回文素数的位数是偶数,则它的奇数位上的数字和与偶数位上的数字和必然相等;>根据数的整除性理论,容易判断这样的数肯定能被11整除,所以它就不可能是素数。
*/
int a,b;
//判断一个数是否是质数
bool isPrime(int x){if(x<=1) return false;for(int i=2;i<=sqrt(x);i++){if(x%i==0) return false;}return true;
}
//判断一个数是否是回文数
bool isHw(int x){int tmp=x;//记录x的值用于过程运算 int y=0;while(tmp){y=y*10+tmp%10;tmp/=10;}if(x==y) return true;else return false;
}
int main(){cin>>a>>b;b=min(b,9999999); //优化b的最大值 for(int i=a;i<=b;i++){if(isHw(i) && isPrime(i)){//优化的关键修改在这儿 cout<<i<<endl;}}return 0;
} 

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch面试内容整理-Elasticsearch 版本差异

Elasticsearch 经过多个版本的迭代,不断增强功能、改进性能和提高安全性。每个大版本的更新通常带来了重大变化,包括新功能的增加、已有功能的弃用以及性能优化等。以下是 Elasticsearch 的不同版本的关键差异和改进的详细介绍,主要包括 5.x、6.x、7.x 和最新的 8.x 版本。 …

【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录

背景 Jetbrain IDE 支持生成 Test 类&#xff0c;其中选择JUnit5 和 JUnit&#xff0c;但是感觉这不是标准的单元测试&#xff0c;因为接口命名吧。 差异对比 两者生成的单测API名称同原API&#xff0c;没加test前缀的。使用差异主要表现在&#xff1a; setUp &#xff06; …

Kylin Server V10 下基于Sentinel(哨兵)实现Redis高可用集群

一、什么是哨兵模式 Redis Sentinel 是一个分布式系统,为 Redis 提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress)这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线信息,并使用投票协议(agreement protocols)来决定是否执行…

扩散模型从原理到实战 入门

diffusion-models-class-CN/unit1/README_CN.md at main darcula1993/diffusion-models-class-CN GitHub 你可以使用命令行来通过此令牌登录 (huggingface-cli login) 或者运行以下单元来登录&#xff1a; from huggingface_hub import notebook_loginnotebook_login() http…

阅读《先进引信技术的发展与展望》识别和控制部分_笔记

基本信息 题名&#xff1a;先进引信技术的发展与展望 作者&#xff1a; 张合;戴可人 发表时间&#xff1a;2023-07-20 可装定、可探测、可处理、可控制是灵巧引信设计的四项基本能力。与之对应&#xff0c;先进引信的基础研究涵盖了信息交联技术、末端探测技术、目标识别技术…

07-Making a Bar Chart with D3.js and SVG

课程链接 Curran的课程&#xff0c;通过 D3.js 的 scaleLinear, max, scaleBand, axisLeft, axisBottom&#xff0c;根据 .csv 文件生成一个横向柱状图。 【注】如果想造csv数据&#xff0c;可以使用通义千问&#xff0c;关于LinearScale与BandScale不懂的地方也可以在通义千…

Fakelocation Server服务器/专业版 ubuntu

前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu&#xff08;安装下载不再赘述&#xff09; sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…

ansible playbook安装nacos

目录 1.创建nacos应用相关的用户 2.创建rocketmq所需目录任务 3.安装JDK1.8、python以及虚拟环境安装PyMysql(用于执行数据库脚本) 4. 解压nacos 5.创建nacos数据库 6.上传sql文件 7.创建数据库表 8.启动nacos 9.nacos集群主机ip配置 10.变量配置 11.配置nacos.yml 更…

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader&#xff0c;注意需要版本10&#xff0c;…

SMMU软件指南操作之流(stream)安全性和流标识

安全之安全(security)博客目录导读 目录 1、流安全性 2、流标识 2.1 什么是 StreamID? 2.2 SubstreamID 的作用 1、流安全性 SMMUv3 架构在没有实现 RME 设备分配的情况下,支持两种可选的安全状态,这由 SMMU_S_IDR1.SECURE_IMPL 报告。如果实现了 RME 设备分配,则通过…

Android仿前端分页组件pagination

仿前端pagination Android仿前端分页组件pagination 最近Android原生有个需求就是做个分页组件&#xff0c;不用上拉加载&#xff0c;因为数据量太大用户喜欢前端的方式&#xff0c;UI主要是拼凑比较简单&#xff0c;主要补充了一些判断越界和数据不全的细节&#xff0c;记录方…

php:使用Ratchet类实现分布式websocket服务

一、前言 最近需要做一个有关聊天的小程序&#xff0c;逻辑很简单&#xff0c;所以不打算用Swoole和workerman之类的&#xff0c;最后选择了Ratchet&#xff0c;因为简单易用&#xff0c;适合小型websocket服务。 二、问题 但是目前我的项目是分布式环境&#xff0c;统一通过Ng…

贴代码框架PasteForm特性介绍之query,linkquery

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…

万有引力定律和库仑定律:自然的对称诗篇

万有引力定律和库仑定律&#xff1a;自然的对称诗篇 在宇宙深邃的知识长河中&#xff0c;万有引力定律和库仑定律恰似两颗璀璨的明珠&#xff0c;闪耀着人类智慧与自然奥秘的光辉。 十七世纪&#xff0c;牛顿在对天体运行的深邃思索中&#xff0c;拨开重重迷雾&#xff0c;发现…

win10局域网加密共享设置

1、创建共享账户 我的电脑右键选择管理 选择本地用户和组 -> 用户 双击用户 在空白区域右键,新建用户 然后创建用户 点击创建后 2、设置网络 右下角网络右键

leetcode 50个简单和中等难度的题

简单难度题目&#xff08;25个&#xff09; ‌两数之和 (Two Sum)‌‌有效的括号 (Valid Parentheses)‌‌罗马数字转整数 (Roman to Integer)‌‌最长公共前缀 (Longest Common Prefix)‌‌合并两个有序链表 (Merge Two Sorted Lists)‌‌移除链表元素 (Remove Linked List E…

iic协议

IIC&#xff08;Inter-Integrated Circuit&#xff09;协议&#xff0c;也被称为I2C协议&#xff0c;是一种由荷兰的PHILIPS公司&#xff08;现为NXP半导体公司&#xff09;开发的简单、高效的通信协议。以下是关于IIC协议的详细介绍&#xff1a; 一、IIC协议概述 定义&#…

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

一、使用VSCode开发.NET项目 1、创建文件夹&#xff0c;使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具&#xff0c;外部dll包依靠它来加载 法1》&#xff1a;NuGet Gallery&#xff0c;注意要启动科学的工具 法2》NuGet Package Manager GUl&#xff0c…

准备阶段 Profiler性能分析工具的使用(一)

Unity 性能分析器 (Unity Profiler) 性能分析器记录应用程序性能的多个方面并显示相关信息。使用此信息可以做出有关应用程序中可能需要优化的事项的明智决策&#xff0c;并确认所做的优化是否产生预期结果。 默认情况下&#xff0c;性能分析器记录并保留游戏的最后 300 帧&a…