1513: [蓝桥杯2020初赛] 跑步锻炼

P1513 - [蓝桥杯2020初赛] 跑步锻炼 - New Online Judge (ecustacm.cn)

这个题同样的也是一道日期题,暴力就行了,但是我开月份的数组的时候忘记往前面加一个 0 了,导致错了好几次。而且给了你最后的星期,其实是可以验证的。星期就从 6 开始,每一天加一下,然后变成 8 的时候就重新赋值为 1 就行。

代码如下:

#include <bits/stdc++.h>
#define int long long
using namespace std;
// 一三五七八十腊,三十一天
int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

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

signed main()
{
	int ans = 0;
	int wenkend = 6;
	for (int i = 2000; i <= 2019; i++)
	{
		for (int j = 1; j <= 12; j++)
		{
			int day;
			if (j == 2 && check(i))
				day = mon[j] + 1;
			else
				day = mon[j];
			for (int k = 1; k <= day; k++)
			{
				if (k == 1 || wenkend == 1)
					ans += 2;
				else
					ans += 1;
				wenkend++;
				if (wenkend == 8)
					wenkend = 1;
				
			}
		}
	}
	
	for (int i = 1; i <= 9; i++)
	{
		int day;
		if (i == 2 && check(2020))
			day = mon[i] + 1;
		else
			day = mon[i];
		for (int j = 1; j <= day; j++)
		{
			if (j == 1 || wenkend == 1)
				ans += 2;
			else
				ans += 1;
			wenkend ++;
			if (wenkend == 8) wenkend = 1;
		}
	}
	ans += 2;
	cout << wenkend << "\n";
	cout << ans << "\n";
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值