40分求助,悬赏一关注
查看原帖
40分求助,悬赏一关注
740350
FS_qwq楼主2023/10/20 17:07
#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;
}
2023/10/20 17:07
加载中...