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

日期问题(编程题) - 题解

#include<iostream>

using namespace std;

int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool check(int y,int m,int d)
{
	if(m<=0||m>=13||d<=0) return 0;
	if(m!=2&&d>month[m]) return 0;
	if(m==2)
	{
		int leap=y%100&&y%4==0||y%400==0;
		if(d>28+leap) return 0;
	}
	return 1;
}

int main()
{
	int a,b,c;
	scanf("%d/%d/%d",&a,&b,&c);
	for(int i=19600101;i<=20591231;i++)
	{
		int y=i/10000,m=i/100%100,d=i%100;
		if(check(y,m,d))
		{
			if(y%100==a&&m==b&&d==c||m==a&&d==b&&y%100==c||d==a&&m==b&&y%100==c) printf("%4d-%02d-%02d\n",y,m,d);
		}
	}
}
0 回复 0 转发 0 喜欢 0 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!