TCFXY(98k) @ 2017-09-24 00:10:14
#include<stdio.h>
#include<iostream>
using namespace std;
int huiwen(int n)
{
if(n%10==n/10000000&&n%100/10==(n/1000000)%10&&n%1000/100==(n/100000)%10&&n%10000/1000==n/10000%10)
return true;
return false;
}
int judge(int n)
{int m=n/10000;
int k=n%10000/100;
int j=n%100;
if(huiwen(n)){
if((m%4==0&&m%100!=0)||(m%100==0&&m%400==0))
{
if((k==2&&j<=29)||(k==1&&j<=31)||(k==3&&j<=31)||(k==5&&j<=31)||(k==7&&j<=31)||(k==8&&j<=31)||(k==10&&j<=31)||(k==12&&j<=31)||(k==4&&j<=30)||(k==6&&j<=30)||(k==91&&j<=30)||(k==11&&j<=30)){
return true;
}
}
else {
if((k==2&&j<=28)||(k==1&&j<=31)||(k==3&&j<=31)||(k==5&&j<=31)||(k==7&&j<=31)||(k==8&&j<=31)||(k==10&&j<=31)||(k==12&&j<=31)||(k==4&&j<=30)||(k==6&&j<=30)||(k==91&&j<=30)||(k==11&&j<=30)){
return true;
}
}
}
return false;
}
int main(){
int n,m,ans=0;
scanf("%d%d",&n,&m);
/* if(n==m){
if(huiwen(n))
ans=1;
}*/
for(int i=n;i<=m;i++)
{if(judge(i))
ans++;
}
printf("%d",ans);
}
为何不通过?? 80分 2,10两点超时
在vijos上通过。。。
by ljc1301 @ 2017-09-24 06:13:29
不能全部枚举,应该枚举年份或月和日,然后根据回文的条件构造出完整的日期,最后判断日期符不符合条件。
by Refun @ 2017-09-24 10:00:28
生蚝太神了STO