题解 | #Day of Week#

Day of Week

https://www.nowcoder.com/practice/a3417270d1c0421587a60b93cdacbca0

#include<iostream>
#include<map>
using namespace std;  //一般都加上这句话

int mday[2][13] = { { 0,31,28,31,30,31,30,31,31,30,31,30,31 },
					{ 0,31,29,31,30,31,30,31,31,30,31,30,31 } };

string intToweekday[7] = { "Sunday", "Monday", "Tuesday", "Wednesday",
						  "Thursday","Friday", "Saturday" };

map<string, int> monthtoint = 
{  //根据key映射到对应的值
	{"January",1},
	{"February",2},
	{"March",3},
	{"April",4},
	{"May",5},
	{"June",6},
	{"July",7},
	{"August",8},
	{"September",9},
	{"October",10},
	{"November",11},
	{"December",12}
};


bool isleap(int year) 
{
	if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
	{
		return true;
	}
	else return false;
}

   
int main() {
	int year, day, mon;
	
	string month;  
	bool isbefore;
	while (cin >> day >> month >> year)  //输入数据
	{
		int gap = 0;  //与今天相差的天数
		mon = monthtoint[month];
		if (year < 2024 || year == 2024 && mon < 2 || year == 2024 && mon == 2 && day < 23)
		{
			isbefore = true;
		}
		else isbefore = false;

		int day1, mon1, year1, day2, mon2, year2;
		if (isbefore) {
			day1 = day; mon1 = mon; year1 = year;
			day2 = 23; mon2 = 2; year2 = 2024;

		}
		else {
			day2 = day; mon2 = mon; year2 = year;
			day1 = 23; mon1 = 2; year1 = 2024;
		}
		while (year1 * 10000 + mon1 * 100 + day1 < year2 * 10000 + mon2 * 100 + day2) 
		{
			gap++;
			day1++;
			if (day1 == mday[isleap(year1)][mon1]) {
				day1 = 0;
				mon1++;
				if (mon1 == 13) {
					mon1 = 1;
					year1++;
				}
			}
		}
		cout << intToweekday[(gap+5)%7] << endl;
	}

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务