当前位置: 首页 > news >正文

C++课后习题训练记录Day67

1.练习项目:

题目描述

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

输入描述

输入包含一个八位整数 N,表示日期。

对于所有评测用例,10000101≤N≤89991231,保证 N 是一个合法日期的 8 位数表示。

输出描述

输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

2.选择课程

在蓝桥云课中选择题库,选择题号498并开始练习。

3.开始练习

(1)源码:
#include<bits/stdc++.h>
using namespace std;
int s2i(string s)
{
int res=0;
for(const auto&i:s){
res=res * 10 + i - '0';
}
return res;
}
string i2s(int x,int w){
string res;
while(x){
res+=(x%10)+'0';
x/=10;
}
while(res.length()<w){
res+='0';
}
reverse(res.begin(),res.end());
return res;
}
bool isLeapyear(int year)
{
return (year%4==0&&year%100!=0)||(year%400==0);
}
bool isok(int year,int month,int day)
{
int days[]={0,31,28,31,30,31,30,31,31,30,31};
if(isLeapyear(year)){
days[2]=29;
}
return day<=days[month];
}
bool ispa(string s)
{
for(int i=0;i<s.length()/2;i++){
if(s[i]!=s[s.length()-1-i]){
return false;
}
}
return true;
}
bool ispa2(string s)
{
if(!ispa(s)){
return false;
}
return s[0]==s[2]&&s[1]==s[3];
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string s;
cin>>s;
int year=s2i(s.substr(0,4)),month=s2i(s.substr(4,2)),day=s2i(s.substr(6,2));
bool ans1=false,ans2=false;
for(int i=year;i<=9999;i++){
for(int j=1;j<=12;j++){
if(i==year&&j<month){
continue;
}
for(int k=1;k<=31;k++){
if(i==year&&j==month&&k<=day){
continue;
}
if(!isok(i,j,k)){
continue;
}
string date=i2s(i,4)+i2s(j,2)+i2s(k,2);
if(!ans1&&ispa(date)){
cout<<date<<'\n';
ans1=true;
}
if(!ans2&&ispa2(date)){
cout<<date<<'\n';
ans2=true;
}
}
}
}
return 0;
}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

http://www.jsqmd.com/news/259408/

相关文章:

  • Linux驱动学习笔记:SPI OLED 驱动源码深度分析
  • SystemVerilog:告别锁存器,优雅驾驭FPGA设计
  • 眼调节训练灯:防控近视的“黑科技”,究竟如何守护孩子的视界?
  • 基于Java的家教智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 2026 年户外LED广告公司综合实力排行榜单及选择建议指南:2026年户外LED广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 彼得林奇的“反周期“投资在不同资产类别中的应用
  • 视频去水印与去字幕教程:免费去水印软件与去字幕工具推荐
  • [服务器DEBUG] 记一次通过BMC远程重启服务器的经历
  • [豪の算法奇妙冒险] 代码随想录算法训练营第三十天 | 452-用最少数量的箭引爆气球、435-无重叠区间、763-划分字母区间
  • 彼得林奇的“家庭股票“在财富传承中的角色
  • c++ qt 下载与环境配置
  • 智能厨房助手:AI Agent的营养均衡膳食规划
  • 全网最全继续教育TOP10AI论文软件测评与推荐
  • 07二元关系
  • Unity 游戏逆向:使用 Il2CppDumper 还原 C# 符号表,修改 DLL 实现“无敌模式”
  • 深度剖析AI原生应用的用户体验优化
  • springclouded集成nacos3读取不到nacos配置
  • 【多式联运】基于AFO算法、GA和PSO算法求解不确定多式联运路径优化问题,同时和MATLAB自带的全局优化搜索器进行对比附Matlab代码
  • C#多线程编程03-异步编程
  • Android 脱壳实战:Frida 脚本 Hook dlopen,在内存中 dump 出被加固的 DEX 文件
  • 【多输入多输出(MIMO)干扰网络的能效优化】基于采用迭代半定规划-加权最小均方误差(SDP-WMMSE)算法与逐次凸逼近(SCA)算法求解MIMO干扰无线网络的能效优化问题研究附Matlab代码
  • Unity 鼠标控制 API 技术文档
  • 【多无人机】面向并行数据采集的多无人机粗粒度闭环轨迹设计无人机检测研究附Matlab代码
  • 【多无人机】面向城市空中交通的多无人机路径规划研究附Matlab代码
  • 导师推荐8个AI论文写作软件,助你轻松搞定本科论文!
  • 用户态网络栈:DPDK 入门实战,绕过 Linux 内核实现“零拷贝”收发包
  • 揭秘提示工程架构师在智能作曲的实用应用技巧
  • 导师严选2026 TOP8一键生成论文工具:专科生毕业论文必备测评
  • 【无人机通信】无人机 - 电力线宽带同步算法,该算法借助农场现有的电网基础设施,实现经济高效、可扩展的数据采集附Matlab代码
  • 基于Java的家政行业智慧管理系统的设计与实现全方位解析:附毕设论文+源代码