AC代码

P2010 [NOIP2016 普及组] 回文日期

王健阳 @ 2017-07-17 20:20:55

#include<cstdio>
int a[11000];
int p[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int r[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
/*int hw(int x)
{
    int k=0;
    while(x!=0)
    {
        int m=x%10;
        k++;
        a[k]=m;
        x=x/10;
    } 
    for(int i=1;i<=k/2;i++)
    {
        if(a[i]!=a[k-i+1])
        {
            return 0;
        }
    }
    return 1;
}*/
int pd(int x)
{
    int n=x/10000;
    int m=x%10000/100;
    int k=x%100;
    if((n%4==0&&n%100!=0)||n%400==0)
    {
        if(m>=1&&m<=12)
        {
            if(k>=1&&k<=r[m])
            {
                return 1;
            }
        }
    }
    else
    {
        if(m>=1&&m<=12)
        {
            if(k>=1&&k<=p[m])
            {
                return 1;
            }
        }
    }
    return 0;
}
int hw2(int x)
{
    int k=0,s=0;
    while(x!=0)
    {
        a[++k]=x%10;
        x=x/10;
    }
    for(int i=k;i>=1;i--)
    {
        s=s*10;
        s=s+a[i];
    }
    for(int i=1;i<=k;i++)
    {
        s=s*10;
        s=s+a[i];
    }
    return s;
}
int main()
{
    int n,m,s=0;
    scanf("%d %d",&n,&m);
    int a=n/10000,b=m/10000;
    for(int i=a;i<=b;i++)
    {
        if(pd(hw2(i))==1) 
        {
            s++;
        }
    }
    printf("%d",s);
}

|