大家好,帮忙看看我的程序怎么了。

P2010 [NOIP2016 普及组] 回文日期

反比例函数 @ 2017-09-25 21:56:30

下面放代码,大神好好看看谢谢。

——————————我是分割线——————————

#include <cstdio>
int date1,date2,y1,y2,t1,t2,p[4],q[4],count;
int main()
{
    freopen("date.in","r",stdin);
    freopen("date.out","w",stdout);
    scanf("%d%d",&date1,&date2);
    y1=date1/10000;y2=date2/10000;
    p[0]=y1/1000;p[1]=y1/100-p[0]*10;
    p[2]=y1/10-p[0]*100-p[1]*10;
    p[3]=y1-p[0]*1000-p[1]*100-p[2]*10;
    q[0]=y2/1000;q[1]=y2/100-q[0]*10;
    q[2]=y2/10-q[0]*100-q[1]*10;
    q[3]=y2-q[0]*1000-q[1]*100-q[2]*10;
    t1=1000*p[0]+100*p[1]+10*p[2]+p[3];
    t2=1000*q[0]+100*q[1]+10*q[2]+q[3];
    for(int i=t1;i<=t2;i++)
    {
        p[0]=i/1000;p[1]=i/100-p[0]*10;
        p[2]=i/10-p[0]*100-p[1]*10;
        p[3]=i-p[0]*1000-p[1]*100-p[2]*10;
        switch(10*p[3]+p[2])
        {
            case 1:case 3:case 5:case 7:case 8:case 10:case 12:
            if(10*p[1]+p[0]<=31) count++;break;
            case 2:
            if(((!i%100==0)&i%4==0)|(i%400==0))
            {
                if(10*p[1]+p[0]<=29) count++;
            }
            else
            {
                if(10*p[1]+p[0]<=28) count++;
            }
            case 4:case 6:case 9:case 11:
            if(10*p[1]+p[0]<=30) count++;
        }
    }
    printf("%d",count);
    return 0;
} 

——————————我是分割线—————————— 亲测数据没毛病,可能超时,但为啥大0分?大神指点。


by 权御天下 @ 2017-09-25 22:37:30

这...拜托把freopen那两行删了的说...


by 神犇的蒟蒻 @ 2017-09-25 23:21:34

@古手羽入 嗯。。。


by 神犇的蒟蒻 @ 2017-09-25 23:21:58

嗯。。。


by caowang @ 2017-09-26 22:20:11


by 反比例函数 @ 2017-10-03 13:50:58

哦蟹蟹 @古手羽入


by 反比例函数 @ 2017-10-03 13:52:06

谢大神!


by 无欢 @ 2017-10-15 13:05:12

这。。。不是基本常识吗?


by 姜维 @ 2017-11-08 22:36:11

这。。。。。你劳资有坑吧


|