蓝桥杯——回文日期

该C++代码实现了一个程序,从给定的数值开始遍历到99999999,检查每一年是否为闰年,并验证相应的月份和日期是否有效。如果找到一个日期的数字是连续且重复的,并且该日期合法,程序将打印这个日期并终止搜索。
摘要由CSDN通过智能技术生成

#include <iostream>
using namespace std;
bool isLeap(int y){
    return (y%4==0&&y%100!=0)||(y%400==0);
}
bool check(int year,int month,int day)
{
  if(month>12||month==0)return false;
  if(day>31)return false;
  if(month==2)
    if(isLeap(year)&&day>29)return  false;
    else if(!isLeap(year)&&day>28)return false;
   if(month==4||month==6||month==9||month==11){
        if(day>30) return false;
    }
  return true;
}
int main()
{
  int year,month,day,a,b,c,d,e,f,g,h;
  int n;
  cin>>n;
  bool flag=false;
  for(int i=n+1;i<=99999999;i++)
  {
    year=i/10000;
    month=i%10000/100;
    day=i%100;
    a=i%10;
    b=(i/10)%10;
    c=(i/100)%10;
    d=(i/1000)%10;
    e=(i/10000)%10;
    f=(i/100000)%10;
    g=(i/1000000)%10;
    h=(i/10000000)%10;
    if(a==h&&b==g&&c==f&&d==e&&flag==false)
    {
      if(check(year,month,day))
      {
        cout<<i<<endl;
        flag=true;
      }
    }
    if(a==h&&b==g&&c==f&&d==e&&a==c&&b==d)
    {
      if(check(year,month,day))
      {
        cout<<i<<endl;
        break;
      }
    }
  }
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值