返回题解分享
讨论 / 题解分享/ 帖子详情

回文日期(编程题) - 题解

使用日期问题模板

#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
void fun1(int date1, char a[], int n1, int n2)
{
	for (int year = n1 + 1; year <= n2; year++)
	{
		for (int month = 1; month <= 12; month++)
		{
			for (int day = 1; day <= 31; day++)
			{
				if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
				{
					;
				}
				else if (month == 2)
				{
					if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
					{
						if (day > 29) break;
					}
					else
					{
						if (day > 28) break;
					}
				}
				else
				{
					if (day > 30)
					{
						break;
					}
				}
				sprintf(a, "%d%02d%02d", year, month, day);
				if ((a[0] == a[7]) && (a[1] == a[6]) && (a[2] == a[5]) && (a[3] == a[4]))
				{
					return;
				}
			}
		}
	}
}

void fun2(int date1, char a[], int n1, int n2)
{
	for (int year = n1 + 1; year <= n2; year++)
	{
		for (int month = 1; month <= 12; month++)
		{
			for (int day = 1; day <= 31; day++)
			{
				if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
				{
					;
				}
				else if (month == 2)
				{
					if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
					{
						if (day > 29) break;
					}
					else
					{
						if (day > 28) break;
					}
				}
				else
				{
					if (day > 30)
					{
						break;
					}
				}
				sprintf(a, "%d%02d%02d", year, month, day);
				char temp1 = a[0];
				char temp2 = a[1];
				if ((temp1 == a[2] && temp1 == a[5] && temp1 == a[7]) && (temp2 == a[3] && temp2 == a[4] && temp2 == a[6]))
				{
					return;
				}
			}
		}
	}
}
int main()
{
	int date = 0;
	cin >> date;
	int n1 = date / 10000;
	int n2 = n1 + 1500;
	char a[9];
	char b[9];
	fun1(date, a, n1, n2);
	fun2(date, b, n1, n2);
	cout << a << endl << b;
	return 0;
}
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!