蒻爆了誒(作者本人)

P2010 [NOIP2016 普及组] 回文日期

ke_duo_li_de_gou @ 2023-01-09 17:17:59

#include <bits/stdc++.h>
using namespace std;
int l,r,a,b,x,yf,rq,t[15]{31,29,31,30,31,30,31,31,30,31,30,31},cnt,hw;
inline int dz(int n)
{
    int nn;
    for(int i = 1;i<=4;i++) 
    {
        nn=n%10+nn*10;
        n/=10;
    }
    return nn;
}
int main()
{
    cin>>a>>b;
    l=a/10000;
    r=b/10000;
    for(int i=l;i<=r;i++)
    {
        x=dz(i);
        yf=x/100;
        rq=x%100;
        if(yf>=1&&yf<=12)
        {
            if(rq<=t[yf])
            {
                hw=i*10000+x;
                if(hw>=a&&hw<=b)
                {
                    ++cnt;
                }
            }
        } 
    }
    cout<<cnt;
    return 0;
}

每次只有60分,不知道有没有能改进的。想法是,枚举每一年的回文年,检验是否合法,用cnt记录。


by InversionShadow @ 2023-01-09 17:20:50

@srt15874341327 您判断了闰年吗?


by VitrelosTia @ 2023-01-09 17:21:49

@srt15874341327 你是不看上个帖子的吗?闰年的情况你讨论了吗???


by 凌日潮汐 @ 2023-01-09 17:21:55

平年二月28天欸


by InversionShadow @ 2023-01-09 17:23:07

我是煞笔,您的数组二月是29天,平年二月28天


by ke_duo_li_de_gou @ 2023-01-09 17:44:56

@yuandingquan1101 不用讨论吧,29天的话0229反过来是9220,整个回文就是92200229,别的闰年反过来不会是0229了。


by hxc_gl @ 2023-01-09 19:13:01

@srt15874341327 虽然是很简单的方法,但是非常有效,您很厉害,但是您并没有用到这个方法(92200229也是真实存在的日期哦),因为您的数组中2月有29天,并且x月对应的天数不应该是t[x-1]吗?


by hxc_gl @ 2023-01-09 19:15:02

@srt15874341327 这个方法真的很好,容我多回复一句,受教了


by ke_duo_li_de_gou @ 2023-01-09 20:38:34

@hxc_gl 没事没事,一起讨论交流也是一种很好的提升方法


|