老子是北瓜 @ 2020-09-13 16:55:59
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int month[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a[100];
bool is_rev(int x){
int tmp=x,i=0;
for(int i=1; i<=8; ++i){
a[i]=tmp%10;
tmp/=10;
}
for(int i=1; i<=8; ++i)
if(a[i]!=a[8-i+1]) return 0;
return 1;
}
bool is_year(int x){
if(x%400==0) return 1;
if(x%4==0 && x%100!=0) return 1;
return 0;
}
int main(){
int date1,date2,s=0;
cin>>date1>>date2;
int y,m,d;
y=date1/10000;
m=date1/100%100;
d=date1%100;
while(y*10000+m*100+d!=date2){
s+=is_rev(y*10000+m*100+d);
if(d==month[m]+is_year(y))
{
if(m==12){
m=1;
++y;
d=1;
}
else{
++m;
d=1;
}
}
else
++d;
}
s+=is_rev(date2);
cout<<s;
return 0;
}
by metaphysis @ 2020-09-14 15:27:23
@老子是北瓜
Hack:
13400430 13400501
您的输出:
1
正确输出:
0
Bug:
if(d==month[m]+is_year(y))
=>
if(d==month[m]+(m == 2 && is_year(y)))
有空请您访问我的 CSDN博客,里面有我写的一本书,内有编程竞赛相关内容的介绍,并附有对应的练习题目(题目源自UVa OJ),可免费下载此书的PDF版本:《C++,挑战编程——程序设计竞赛进阶训练指南》。