70分求调qwq
查看原帖
70分求调qwq
799530
fanguowei2023楼主2023/12/21 20:12

点8、9、10错了

#include<iostream>
using namespace std;
long long n,y,r,n1,y1,r1,n2,y2,r2,ans,f;
string a,b;
int main()
{
	getline(cin,a);//开始日期 
	getline(cin,b);//结束日期 
	for(int i=0;i<4;i++)n1=n1*10+a[i]-'0';//获得开始年月日 
	for(int i=4;i<6;i++)y1=y1*10+a[i]-'0';
	for(int i=6;i<8;i++)r1=r1*10+a[i]-'0';
	for(int i=0;i<4;i++)n2=n2*10+b[i]-'0';//获得结束年月日 
	for(int i=4;i<6;i++)y2=y2*10+b[i]-'0';
	for(int i=6;i<8;i++)r2=r2*10+b[i]-'0';
	while(1)//n1,y1,r1分别表示现在的年月日 
	{
		f=0;//月份是否更新 
		int temp=n1*10000+y1*100+r1;//当前日期 
		if(temp>n2*10000+y2*100+r2)break;//如果超过结束日期,退出循环 
		int temp1=temp,temp2=0;
		while(temp>=1)//反转日期 
		{
			temp2=temp2*10+(temp%10);
			temp/=10;
		}
		if(temp2==temp1)ans++;//如果日期回文,答案加1 
		if(y1==12)n1++,y1=1,r1=1;//更新年份 
		else if(r1==31 && (y1==1 || y1==3 || y1==5 || y1==7 || y1==8 || y1==10 || y1==12))y1++,r1=1,f=1;//31天的月份 
		else if(r1==30 && (y1==4 || y1==6 || y1==9 || y1==11))y1++,r1=1,f=1;//30天的月份 
		else if(y1==2)//2月 
		{
			if(((n1%4==0 && n1%100!=0) || (n1%400==0)) && r1==29)y1++,r1=1,f=1;//如果是闰年并且2月到了29日,更新月份 
			else if((!((n1%4==0 && n1%100!=0) || (n1%400==0))) && r1==28)y1++,r1=1,f=1;//如果不是闰年并且2月到了28日,更新月份 
		}
		if(f==0)r1++;//如果月份没变,更新日 
	}
	cout<<ans;//输出答案 
	return 0;
}
2023/12/21 20:12
加载中...