求助大佬!!!

P2010 [NOIP2016 普及组] 回文日期

gaojian2007 @ 2021-04-14 20:24:44


using namespace std;
int main()
{
    long long int a,b,x[9],y,m,d,w,r,s=0,p;
    cin>>a>>b;
    p=a;
    for(int i=1;p!=0;i++)
    {
        x[i]=p%10;
        p/=10;
    }
    d=x[1]+x[2]*10;
    m=x[3]+x[4]*10;
    y=x[5]+x[6]*10+x[7]*100+x[8]*1000;
    while(d+m*100+y*10000<=b)
    {
        w=0;
        r=d+m*100+y*10000;
        for(int i=1;r!=0;i++)
        {
        x[i]=r%10;
        r/=10;
        }
        for(int j=1;j<=4;j++)
    if(x[j]!=x[9-j])w=1;
    if(w==0)s++;
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
        {
            if(d>31)
            {
                d=1;
                m++;
            }
        }
        else
        {
            if(m==2)
            {
                if(x[6]==0&&x[7]==0&&x[8]==0)
                {if(y%400==0)
                {
                    if(d>29)
                    {
                        d=1;
                        m++;
                    }
                }
                else
                if(d>28)
                {
                    d=1;
                    m++;
                }
                }
                if(y%4==0)
                if(d>29)
                    {
                        d=1;
                        m++;
                    }
                    else
                if(d>28)
                {
                    d=1;
                    m++;
                }
            }
            else
            {
                if(d>30)
                {
                    d=1;
                    m++;
                }
            }
        }
        d++;
        if(m>12)
        {
            y++;
            m=1;
        }
    }
    cout<<s;
    return 0;
}```

by gaojian2007 @ 2021-04-16 19:01:00

using namespace std;
int main()
{
    long long int a,b,x[9],y,m,d,w,r,s=0,p;
    cin>>a>>b;
    p=a;
    for(int i=1;p!=0;i++)
    {
        x[i]=p%10;
        p/=10;
    }
    d=x[1]+x[2]*10;
    m=x[3]+x[4]*10;
    y=x[5]+x[6]*10+x[7]*100+x[8]*1000;
    while(d+m*100+y*10000<=b)
    {
        w=0;
        r=d+m*100+y*10000;
        for(int i=1;r!=0;i++)
        {
        x[i]=r%10;
        r/=10;
        }
        for(int j=1;j<=4;j++)
    if(x[j]!=x[9-j])w=1;
    if(w==0)s++;
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
        {
            if(d>31)
            {
                d=1;
                m++;
            }
        }
        else
        {
            if(m==2)
            {
                if(x[6]==0&&x[5]==0)
                {if(y%400==0)
                {
                    if(d>29)
                    {
                        d=1;
                        m++;
                    }
                }
                else
                if(d>28)
                {
                    d=1;
                    m++;
                }
                }
                else
                {
                    if(y%4==0)
                if(d>29)
                    {
                        d=1;
                        m++;
                    }
                    else
                if(d>28)
                {
                    d=1;
                    m++;
                }
            }
            }
            else
            {
                if(d>30)
                {
                    d=1;
                    m++;
                }
            }
        }
        d++;
        if(m>12)
        {
            y++;
            m=1;
        }
    }
    cout<<s;
    return 0;
}

|