60求助

P2010 [NOIP2016 普及组] 回文日期

biao_o @ 2024-04-14 15:10:22

#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int day(int a)
{
    int b[33];
    for(int i=8;i>=1;i--)
    {
        b[i]=a%10;
        a/=10;
    }
    for(int i=1;i<=4;i++)
    {
        if(b[i]!=b[8-i+1])
        {
            return 0;
        }
    }
    return 1;
}
bool Year(int year) 
{
    return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
int main()
{
    cin>>n>>m;
    for(int i=n;i<=m;i++)
    {
        if(0<(i%10000)/100<=12)
        {
            if((i%10000)/100==1||(i%10000)/100==3||(i%10000)/100==5||(i%10000)/100==7||(i%10000)/100==8||(i%10000)/100==10||(i%10000)/100==12)
            {
                if(0<i%100&&i%100<=31)
                {
                    if(day(i)==1)
                    {
                        ans+=1;
                    }
                }
            }
            else if((i%10000)/100==2)
            {
                if(Year(i/10000))
                {
                    if(0<i%100&&i%100<=29)
                    {
                        if(day(i)==1)
                        {
                            ans+=1;
                        }
                    }
                }
                else
                {
                    if(0<i%100&&i%100<=28)
                    {
                        if(day(i)==1)
                        {
                            ans+=1;
                        }
                    }
                }
            }
            else
            {
                if((i%10000)/100>0)
                {
                    if(0<i%100&&i%100<=30)
                    {
                        if(day(i)==1)
                        {
                            ans+=1;
                        }
                    }
                }

            }
        }

    }
    cout<<ans;
    return 0;
}

|