FS_qwq @ 2023-10-20 17:07:29
#include<bits/stdc++.h>
using namespace std;
string a,b,x,y,u,v,e,f;
int i,ans,c,d,c1,c2;
bool runnian(int n){//闰年判段
if((n%400==0)||(n%4==0&&n%100!=0))return true;
else return false;
}
bool panduan(int n){
int a=n/1000,b=(n/100)%10,c=((n/10)%100)%10,d=((n%1000)%100)%10;
int k=d*10+c,t=b*10+a;
if(n==c){//如果是第一年或者最后一年
if(k<=c1){
return false;
}else return true;
}else if(n==d){
if(k>=c2){
return false;
}else return true;
}
if(1<=k&&k<=12&&1<=t&&t<=31){//开始判断回文日期是否满足要求
if(k==4||k==6||k==9||k==11)
if(t<=30)return true;
else if(k==1||k==3||k==5||k==7||k==8||k==10||k==12)
if(t<=31)return true;
else if(k==2){
if(runnian(n)==true)
if(t<=29)return true;
else if(runnian(n)==false)
if(t<=28)return true;
}
}
return false;
}
int main(){
cin>>a>>b;
for(i=0;i<4;i++){//提取年份
x[i]=a[i];
y[i]=b[i];
}
for(i=4;i<6;i++){//提取月份
u[i]=a[i];
v[i]=b[i];
}
//年份,月份转为int类型
c=(x[0]-'0')*1000+(x[1]-'0')*100+(x[2]-'0')*10+(x[3]-'0');
d=(y[0]-'0')*1000+(y[1]-'0')*100+(y[2]-'0')*10+(y[3]-'0');
c1=(u[4]-'0')*10+(u[5]-'0');
c2=(v[4]-'0')*10+(v[5]-'0');
//遍历每一年进行判断
for(i=c;i<=d;i++){
if(panduan(i)==true)ans++;
}
cout<<ans<<endl;
return 0;
}
by dyc2022 @ 2023-10-20 17:25:21
这是去年被 ban 掉了的 CEOI 出题人吗????这好像是橙题,同志。
by FS_qwq @ 2023-10-20 17:27:46
@dyc2022 ?