第10个点TLE,8、9两点WA,求解。

P2010 [NOIP2016 普及组] 回文日期

hw20王文浩 @ 2021-04-03 17:50:42

#include<bits/stdc++.h>
using namespace std;
int main(){
    int date1,date2,date,x=0,y1,y2,y3,y4,y,m,m1,m2,d,d1,d2;
    cin>>date1>>date2;
    date=date1;
    for(;date<=date2;date+=1){
        y=date/10000;
        m=date%10000/100;
        d=date%100;
        y1=y/1000;
        y2=y%1000/100;
        y3=y%100/10;
        y4=y%10;
        m1=m/10;
        m2=m%10;
        d1=d/10;
        d2=d%10;
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
            if(y1==d2&&y2==d1&&y3==m2&&y4==m1){
            x+=1;}
            }
        else if(m==4||m==6||m==9||m==11){
            if(y1==d2&&y2==d1&&y3==m2&&y4==m1){
            x+=1;}
        }
        if(m==2){
            if(y1==d2&&y2==d1&&y3==m2&&y4==m1){
            if(y%100==0&&y%400==0||y%4==0){
                if(m1==0&&m2==2&&d1<=2&&d2<=8)
                x+=1;
            }
            x+=1;}
        }
    }
    cout<<x<<endl;
    return 0;
}

by metaphysis @ 2021-04-03 20:11:31

@hw20王文浩

Hack:

82200228
82200228

您的代码输出:

2

by metaphysis @ 2021-04-03 20:19:19

@hw20王文浩

您的代码会将类似于 45211254 的日期也认为是合法的回文日期。需要注意判断年月日中的“日”是否在“01”到“31”的范围内。


by hw20王文浩 @ 2021-04-04 12:50:14

@metaphysis 感谢指出错误!


|