带注释代码80分过subtask#1求调
查看原帖
带注释代码80分过subtask#1求调
1284582
F_L_Bird楼主2024/8/6 16:22

代码如下

#include<string>
#include<iostream>
using namespace std;

int get_next_day(int n){
	int y = n / 10000;
	int m = n % 10000 / 100;
	int d = n % 100;
	if(((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10) && d == 31) || ((m == 4 || m == 6 || m == 9 || m == 11) && d == 30))	//非二月跨月
	{
		return y * 10000 + (m + 1) * 100 + 1;
	}
	else if(m == 2)	//二月跨月
	{
		if((y % 4 == 0 && y % 100 != 0 || y % 400 == 0) && d == 29 || d == 28)	//闰年29日或平年28日跨月
		{
			return y * 10000 + (m + 1) * 100 + 1;
		}
	}
	if(m == 12 && d == 31)		//十二月跨年
	{
		return (y + 1) * 10000 + 100 + 1;
	}
	else		//看着落日猛然发现又过了一天
	{
		return y * 10000 + m * 100 + d + 1;
	}
	return 0;
}

bool check(int i){		//检查是否为回文
	string s = to_string(i);
	for(int i = 0;i < s.length() / 2;i += 1)
	{
		if(s[i] != s[s.length() - i - 1])
		{
			return false;
		}
	}
	return true;
}

int main(){
	int date1,date2;
	long long ans = 0;
	cin>>date1>>date2;
	while(date1 <= date2)
	{
		if(check(date1))
		{
			ans += 1;
		}
		date1 = get_next_day(date1);
	}
	cout<<ans<<endl;
	return 0;
}

请各位dalao指点迷津qwq

2024/8/6 16:22
加载中...