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

第几天(结果填空) - 题解

#include <bits/stdc++.h>
using namespace std;

int m1[] = {0, 1, 3, 5, 7, 8, 10, 12}; // 存储大月
int m2[] = {0, 4, 6, 9, 11}; // 存储小月

int main()
{
	int num = 1; // 2000.1.1是第一天
	int year = 2000, month = 1, day = 1;
	int year2 = 2000, month2 = 5, day2 = 4;	
	while(1)
	{
		num++, day++;
		for (int i = 1; i <= 7; ++i) // 判断是否为大月
		{
			if (month == m1[i] && day == 32) // 大月满足32天进一月
			{ 
				month++;
				day = 1;
				break;
			}
		}
		for (int i = 1; i <= 4; ++i) // 判断是否为小月
		{
			if(month == m2[i] && day == 31) // 小月满31天进一月
			{
				month++;
				day = 1;
				break;
			}
		} 	
		if (month == 2) // 2月单独判断
		{
			if ((year % 4 == 0 && year % 100) || year % 400 == 0)
			{
				if (day == 30) // 闰年满30天进一月
				{
					month++;
					day = 1;
				}
			}
			else
			{
				if (day == 29) // 平年满29天进一月	
				{
					month++;
					day = 1;
				}
			}
		}
		if (month == 13) // 满13月进一年
		{
			month = 1;
			year++;
		}
		if (year == year2 && month == month2 && day == day2) break;
	}
	
	cout << num << '\n';
	return 0;
}


最终答案:125
0 回复 0 转发 1 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!