蓝桥杯备考(倒计时五十七天)——回文日期

https://www.acwing.com/problem/content/description/468/icon-default.png?t=M0H8https://www.acwing.com/problem/content/description/468/y总yyds!

#include

using namespace std;

int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//假设为平年,先将二月天数设为28

bool check(int date)
{
    int year=date/10000;//计算年
    int month=date%10000/100;//计算月
    int day=date%100;//计算天

    if(month<=0||month>12) return false;//当月数不在范围,返回false
    if(day<=0||month!=2&&day>days[month]) return false;//当不是二月,且天数不在范围就返回false

    if(month==2)
    {
        int leap=year%400==0||year%100&&year%4==0;//判断是否为闰年

        if(day>28+leap) return false;//判断二月的天数是否在范围内
    }

    return true;
}

int main()
{
    int date1,date2;
    cin>>date1>>date2;

    int res=0;

    for(int i=1000;i<10000;i++)//枚举年数
    {
        int date=i,x=i;

        for(int j=0;j<4;j++) date=date*10+x%10,x/=10;//算出该年对应的回文的日期

        if(date>=date1&&date<=date2&&check(date)) res++;//若符合要求,数量加一
    }

    cout<

你可能感兴趣的:(蓝桥杯)