news 2026/9/2 17:19:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:30:00

移动应用持续部署指南:Android 与 iOS 自动化发布

移动应用持续部署指南&#xff1a;Android 与 iOS 自动化发布 1. 引入与连接&#xff1a;从繁琐到流畅的发布革命 想象一下这个场景&#xff1a;周五下午5点&#xff0c;你团队刚刚修复了一个关键bug&#xff0c;想要尽快推送给用户。你打开开发者控制台&#xff0c;手动打包…

作者头像 李华
网站建设 2026/8/31 22:43:55

java controller的DTO如果有内部类,应该注意什么

在Java Controller中使用带有内部类的DTO时&#xff0c;需要注意以下关键点&#xff1a;1. 内部类必须是静态的&#xff08;static&#xff09;// ✅ 正确做法 public class UserDTO {private String name;private Address address;public static class Address { // 必须是st…

作者头像 李华
网站建设 2026/9/2 22:45:06

11.1 机器人“仿真-真实”迁移:弥合虚拟与现实间的动力学鸿沟

11.1 “仿真-真实”迁移:弥合虚拟与现实间的动力学鸿沟 11.1.1 引言:现实差距的本质与挑战 在机器人研发流程中,基于物理的仿真提供了无风险、高效率且成本可控的测试与训练环境。然而,任何仿真模型都是对物理世界的近似,由此产生的“现实差距”是部署仿真中训练的策略或…

作者头像 李华