洛谷 NOIP2016 普及组 回文日期

这道题目本来是不难想思路的。。。。。。

然而我第一次做的时候改了蛮久才把代码完全改对,主要感觉还是不够细心,敲的时候也没注意见检查一些小错误,那么接下来不说废话,请看题干:

接下来请看输入输出的样例以及数据范围:

 

我提供两个方法去做这个题,第一个思路是:

首先我们分析容易看出输入的日期其实当作两个八位数处理即可,然后直接循环,从起始日期到截止日期,如果是回文日期,直接ans++即可,只是我们需要思考如何来让日期进行正确的进位,所以这时候我考虑使用函数来达到目的的功能,接下来请看代码:

#include<bits/stdc++.h>
using namespace std;
int d1,d2,ans;
int getday(int y,int m){//y年m月有多少天if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)return 31;if(m==4 || m==6 || m==9 || m==11)return 30;//判断闰年if(( !(y%4) && y%100) || !(y%400))return 29;else return 28;
}
int nextday(int x){//x的下一天  表示为八位整数int y=x/10000;int m=x/100%100;int d=x%100;if(d != getday(y,m))++d;else if(m!=12){++m;d=1;}else {y+=1;m=1;d=1;}return 10000*y+100*m+d;
}
int rev(int x){int ans=0;while(x){ans=ans*10+x%10;x/=10;}return ans;
}
int main(){scanf("%d%d",&d1,&d2);for(int d=d1;d<=d2;d=nextday(d)){if(d == rev(d)) ans++;}printf("%d\n",ans);return 0;
}

 看起来很长其实也并不复杂,写了几个函数,第一个函数是判断对应的月份有多少天,第二个是判断循环中的下一天的日期,第三个循环判断翻转数字是否与一开始的一样,也就是判断回文数,然后就是很简单的输入和枚举,相信不必进行解释了。

接下来我就在思考,很明显一开始的方法还是进行了很多不必要的循环,两个回文日期的间隔一般是比较大的,所以有很多不必要的循环,也就是我考虑如何降低循环的次数,同时也能降低时间复杂度,接下来请看代码:

#include<bits/stdc++.h>
using namespace std;
int d1,d2,ans;
int getday(int y,int m){//y年m月有多少天if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)return 31;if(m==4 || m==6 || m==9 || m==11)return 30;//判断闰年if(( !(y%4) && y%100) || !(y%400))return 29;else return 28;
}
int nextday(int x){//x的下一天  表示为八位整数int y=x/10000;int m=x/100%100;int d=x%100;if(d != getday(y,m))++d;else if(m!=12){++m;d=1;}else {y+=1;m=1;d=1;}return 10000*y+100*m+d;
}
int rev(int x){int ans=0;while(x){ans=ans*10+x%10;x/=10;}return ans;
}
int main(){scanf("%d%d",&d1,&d2);for(int y=1000;y<=9999;y++){int revy=rev(y);int m=revy/100;int d=revy%100;if(m>=1 && m<=12 && d>=1 && d<=getday(y,m)){int x=y*10000+revy;if(x>=d1 && x<=d2) ans++;}}printf("%d\n",ans);return 0;
}

这个方法就是将年份进行了循环,从1000循环到9999年,每次循环先判断出是否是回文年份并且这个回文年份是否在输入的起始日期和截止日期之间,如果在,那么就可以ans++,这是因为我们可以发现日期是一个八位数字,并且由于年份、月份和日子都不可以为0,所以我们其实可以把年份看成特殊进位的数字,进而只需要循环一万次不到就可以得到结果。

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

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

相关文章

听GPT 讲Rust源代码--src/tools(23)

File: rust/src/tools/clippy/rustc_tools_util/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/clippy/rustc_tools_util/src/lib.rs文件的作用是为Clippy提供了一些实用工具和辅助函数。 该文件中定义了VersionInfo结构体&#xff0c;它有三个字段&#xff0c;分别为m…

Web组态可视化编辑器-by组态

演示地址&#xff1a; http://www.by-lot.com http://www.byzt.net web组态可视化编辑器&#xff1a;引领未来可视化编辑的新潮流 随着网络的普及和快速发展&#xff0c;web组态可视化编辑器应运而生&#xff0c;为人们在网络世界中创建和编辑内容提供了更加便捷的操作方式。这…

【Spring实战】配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍&#xff0c;我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中&#xff0c;…

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践&#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样&#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…

【clickhouse】在CentOS中离线安装clickhouse

一、下载地址 通过以下链接进行rpm安装包的下载 https://packages.clickhouse.com/rpm/stable/ 根据需求下载对应版本 注意&#xff1a;ClickHouse 20.8.2.3版本新增加了 MaterializeMySQL 的 database 引擎&#xff0c;该 database 能映射到 MySQL 中的某个 database&#…

NativePHP:使用 PHP 构建桌面应用程序

PHP 在我心中占据着特殊的位置。它是我的第一份工作&#xff0c;我记得我在家里花了无数个小时做一些小项目。我非常想用 PHP 创建桌面应用程序&#xff0c;但我从来没有做到过。 现在&#xff0c;感谢 NativePHP&#xff0c;我可以了。 NativePHP 追随 Slack、Discord 和 Tre…

easyexcel复杂表头导出

easyexcel复杂表头导出 /*** ClassName ColumnWidthStyleStrategy* Description: excel导出列长度**/ public class ExcelWidthStyleStrategy extends AbstractColumnWidthStyleStrategy {private static final int MAX_COLUMN_WIDTH 200;private final Map<Integer, Map…

macOS下载

macOS 下载 历史版本下载地址&#xff1a; https://support.apple.com/zh-cn/HT211683 例&#xff1a; macOS 11 Big sur: https://apps.apple.com/cn/app/macos-big-sur/id1526878132?mt12

二维码智慧门牌管理系统升级:安全与便捷并存

文章目录 前言一、系统升级与用户操作记录二、展望与智能门禁未来三、智能科技为未来铺路 前言 科技与门禁系统演进 随着科技的飞速发展&#xff0c;智能门牌系统成为建筑物不可或缺的一部分。其中&#xff0c;二维码智慧门牌管理系统以其独特优势逐渐受到关注。它不仅提升了出…

【ARMv8M Cortex-M33 系列 1 -- SAU 介绍】

文章目录 Cortex-M33 SAU 介绍SAU 的主要功能包括SAU 寄存器配置示例 Cortex-M33 SAU 介绍 在 ARMv8-M 架构中&#xff0c;SAU&#xff08;Security Attribution Unit&#xff09;是安全属性单元&#xff0c;用于配置和管理内存区域的安全属性。SAU 是 ARM TrustZone 技术的一…

MATLAB - 机器人逆运动学设计器(Inverse Kinematics Designer APP)

系列文章目录 前言 一、简介 通过逆运动学设计器&#xff0c;您可以为 URDF 机器人模型设计逆运动学求解器。您可以调整逆运动学求解器并添加约束条件&#xff0c;以实现所需的行为。使用该程序&#xff0c;您可以 从 URDF 文件或 MATLAB 工作区导入 URDF 机器人模型。调整逆…

智能优化算法应用:基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.晶体结构算法4.实验参数设定5.算法结果6.…

MyBatis见解3

8.MyBatis的关联查询 8.3.一对多查询 需求&#xff1a;查询所有用户信息及用户关联的账户信息。 分析&#xff1a;用户信息和他的账户信息为一对多关系&#xff0c;并且查询过程中如果用户没有账户信息&#xff0c;此时也要将用户信息查询出来&#xff0c;此时左外连接查询比…

Android Matrix画布Canvas缩放scale,Kotlin

Android Matrix画布Canvas缩放scale&#xff0c;Kotlin val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.ARGB_8888)val canva…

P1883 函数

题目链接 P1883 函数 思路 举例 题目中的 F ( x ) F(x) F(x) 看起来很复杂&#xff0c;但由于每个 f ( x ) f(x) f(x) 的二次项系数 a a a 都不是负数&#xff0c;故 F ( x ) F(x) F(x) 是一个单谷函数。直接说出结论可能有些令人难以接受&#xff0c;不妨举出两个例子…

Ubuntu环境下使用Livox mid 360

参考文章&#xff1a; Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客 一&#xff1a;Livox mid 360驱动安装与测试 前言&#xff1a; Livox mid360需要使用Livox-SDK2&#xff0c;而非Livox-SDK&#xff0c;以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部…

FastAPI实现文件上传下载

FastAPI实现文件上传下载 1.后端FastAPI2.后端html3.效果 最近的项目需求&#xff0c;是前端vue&#xff0c;后端fastAPI&#xff0c;然后涉及到图像的消息发送&#xff0c;所以需要用fast写文件上传下载的接口&#xff0c;这里简单记录一下。 1.后端FastAPI import os.path i…

.net core webapi 大文件上传到wwwroot文件夹

1.配置staticfiles(program文件中) app.UseStaticFiles();2.在wwwroot下创建upload文件夹 3.返回结果封装 namespace webapi;/// <summary> /// 统一数据响应格式 /// </summary> public class Results<T> {/// <summary>/// 自定义的响应码&#xff…

H266/VVC帧内预测编码

预测编码技术 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或多个样本值&#xff0c;根据某种模型或方法&#xff0c;对当前的样本值进行预测&#xff0c;并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

python3 数据分析项目案例,用python做数据分析案例

本篇文章给大家谈谈python3 数据分析项目案例&#xff0c;以及用python做数据分析案例&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 目录 一丶可视化绘图案例 1.曲线图 2.柱形图 3.点线图 4.3D散点图 5. 绘制漏斗图 6. 绘制词云图 二丶包/模块使用示例 (1)…