news 2026/4/18 6:48:31

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/4/18 3:52:10

【多式联运】基于AFO算法、GA和PSO算法求解不确定多式联运路径优化问题,同时和MATLAB自带的全局优化搜索器进行对比附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/4/17 22:53:07

芒格的多学科知识在投资决策中的作用

芒格的多学科知识在投资决策中的作用 关键词:芒格、多学科知识、投资决策、跨学科思维、投资策略 摘要:本文深入探讨了芒格所倡导的多学科知识在投资决策中的重要作用。从背景介绍出发,阐述了研究目的、预期读者、文档结构及相关术语。详细剖析了多学科知识的核心概念,展示…

作者头像 李华
网站建设 2026/4/12 22:19:09

揭秘提示工程架构师在智能作曲的实用应用技巧

提示工程架构师的智能作曲手册&#xff1a;用文字“编写”音乐的10个实用技巧 关键词 提示工程、智能作曲、大语言模型&#xff08;LLM&#xff09;、音乐生成、Prompt设计、上下文锚点、风格迁移 摘要 凌晨三点&#xff0c;短视频导演小王盯着电脑里的素材——老人摸着旧书店的…

作者头像 李华
网站建设 2026/4/16 20:03:47

Nano Banana AI 绘画创作前端代码(使用claude code编写)

在线 https://chat.xutongbao.top/nextjs/light/nano use clientimport Header from /components/header import {ArrowLeft,Send,RefreshCw,Sparkles,Upload,X,Download,Copy,Check,ImagePlus,Maximize2, } from lucide-react import { useRouter } from next/navigation imp…

作者头像 李华