P2010 回文日期

P2010 回文日期

题解

回文日期,一共8位,只需要枚举4位就好了其实,然后判断它是否合法

代码

#include<bits/stdc++.h>

using namespace std;

int data1,data2,ans=0;

int huiwen(int x)
{
    int y=x;
    int a1=y%10; y/=10;
    int a2=y%10; y/=10;
    int a3=y%10; y/=10;
    int a4=y%10; y/=10;
    
    y=x*10000+a1*1000+a2*100+a3*10+a4;
    
    return y;
} 

bool check(int x)
{
    int y=x;
    bool flag=0;
    int qq4=y/10000;
    if((qq4%4==0&&qq4%100!=0)||qq4%400==0) flag=1;
    
    y=y%10000;
    
    int yue=y/100; int day=y%100;
    if(yue<=0||yue>12) return false;
    if(day<=0||day>31) return false;
    
    if(yue==2)
    {
        if(flag&&day>29) return false;
        if(!flag&&day>28) return false;
    }
    
    if(yue==4||yue==6||yue==9||yue==11)
    {
        if(day>30) return false;
    }
    
    if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)
    {
        if(day>31) return false;
    }
    
    return true;
}

int main()
{
    scanf("%d%d",&data1,&data2);
    
    for(int i=data1/10000;i<=data2/10000;i++)
    {
        int kk=huiwen(i);
        if(check(kk)) ans++;
    }
    
    printf("%d",ans);
    
    return 0;
}
原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/11096685.html