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

lanqiaoOJ 498 回文日期

//编写这么几个函数:

//1.从string转换为指定位数int的函数

//2.从int转换为指定位数string的函数

//3.判断是否为闰年的函数

//4.判断日期是否合法的函数

//5.判断字符串是否为回文日期的函数

//6.判断字符串是否为ABABBABA型回文的函数

#include<bits/stdc++.h>

using namespace std;

int s2i(string s){

  int res=0;

  for(int i=0;i<s.size();i++){

    int x=s[i]-'0';

    res=res*10+x;

  }

  return res;

//对于一个数字,如果没有数位的保障,当数字为各位数如月份中的9,应该用09来表示,那么在从整数转字符串的过程中, 就会导致字符串中的字符个数减少

string i2s(int x,int w){

  string s;

  while(x){

    s+=(x%10)+'0';

    x/=10;

  }

  while(s.length()<w){

    s+='0';

  }

  reverse(s.begin(),s.end());

  return s;

bool isleapyear(int year){

  return(year%400==0||(year%4==0&&year%100!=0));

}

bool isok(int year,int month,int day){

  int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

  if(isleapyear(year)){

    days[2]=29;

  } 

  return day<days[month];

}

bool ispa1(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(!ispa1(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);

        

        //这道题目不要担心,会不会在ABABBABA型的回文日期出现之前,并没有普通的回文日期,

        //因为两个判断互不干扰,ABABBABA型回文串,也是回文串

//实在不行,两个大不了输出一样的字符串又不是不行

        if(!ans1&&ispa1(date)){

          cout<<date<<endl;

          ans1=true;

        }

        if(!ans2&&ispa2(date)){

          cout<<date<<endl;

          ans2=true;

        }   

      }

    }

  }

  

  return 0;

http://www.dtcms.com/a/123021.html

相关文章:

  • ValueError: Cannot handle batch sizes > 1 if no padding token is defined`
  • 数据结构(五)——AVL树(平衡二叉搜索树)
  • 【Python语言基础】17、继承
  • 深入理解 Spring 的 MethodParameter 类
  • 测试的分类
  • OpenCV 图形API(25)图像滤波-----均值滤波(模糊处理)函数blur()
  • 写一个简单的demo来理解数据库外键
  • Java中的参数是值传递还是引用传递?
  • webpack配置导致浏览器自动刷新
  • Pytest+Allure+Excel接口自动化测试框架实战
  • 【Kafka基础】监控与维护:分区健康检查,确保数据高可用
  • 【C++算法】53.链表_重排链表
  • 数据可视化 —— 柱形图应用(大全)
  • 《Uniapp-Vue 3-TS 实战开发》构建HTTP请求拦截器
  • Windows 2016 如何关闭自动更新
  • HLSL Complex Shapes With For Loops
  • Linux启动端口,Windows 看是否通
  • 使用 Vue + PDF.js 构建在线 PDF 阅读器(支持目录与缩放)
  • Petalinux最简开发
  • (2)网络学习之堡垒机
  • 如何避免Python爬虫重复抓取相同页面?
  • 【数据结构】树状数组
  • RTT中断管理学习
  • 苹果电脑MAC系统安装
  • 【MySQL篇】mysqlpump和mysqldump参数区别总汇
  • 【C++游戏引擎开发】第11篇:GLFW、GLAD环境搭建与第一个三角形渲染
  • 09-Spring 与线程安全:IOC 与多线程下的坑与解法
  • 解锁Midjourney创作潜能:超详细提示词(Prompts)分类指南
  • 【42期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深指数最新分时BOLL数据及接口API说明文档
  • 三、使用Keil5新建STM32工程