蓝桥杯 跑步锻炼

小蓝每天都锻炼身体。
正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。
小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米

这道题的思路很简单,用伪代码跟大家讲一下吧

初始化月份
int main()
{
	定义并初始化日期
	while(1){
	千米数递增(特殊考虑月初和周一+2k)
	判断终止日期并退出
	星期数循环递增、天数加一
	月数加一(特殊考虑一下闰年2月多一天)
	年数加一
	}
	输出
}
#include<iostream>

using namespace std;

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

int main() {
	//初始化日期
	int y = 2000, m = 1, d = 1, w = 6, ans = 0;
	while (true) {
		//千米书累加
		ans += (d == 1 || w == 1) + 1;
		if (y == 2020 && m == 10 && d == 1) {
			break;
		}

		//日期天数递增
		w =( w + 1 ) % 7;
		d = d + 1;

		//天数循环,月数加一
		if(( y % 400 == 0 || y % 4 == 0 && y % 100 != 0 ) && m == 2){//闰年且为二月
			if (d > month[m] + 1) {
				d = 1;
				m += 1;
			}
		}else if (d > month[m]) {
				d = 1;
				m += 1;
			}

		//月份循环,年数加一
		if (m == 13) {
			y += 1;
			m = 1;
		}
	}

	printf("%d\n", ans);
	return 0;
}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值