2020年第十一届蓝桥杯省赛试题——试题D 跑步锻炼(填空题)

在这里插入图片描述

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

思路: 对于每月一号是否是星期一的判断直接将累计天数偏移到星期六即可,即加六天对7取余即可判断!

  • 最终答案:天数 + 月份初一数 + 星期一数 - 初一和星期一重复数
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int res, sum, k, m;
int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

int main(){
    for(int i = 2000; i <= 2019; i ++){
        if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) month[2] = 29;
        for(int j = 1; j <= 12; j ++){
            // 判断一号是不是星期一,偏移六天即可(表示初一是星期六)
            if((sum + 6) % 7 == 1) k ++;
            sum += month[j], m ++;
        }
        month[2] = 28;
    }
    // 处理2020年
    month[2] = 29;
    for(int i = 1; i <= 9; i ++){
        // 判断一号是不是星期一
        if((sum + 6) % 7 == 1) k ++;
        sum += month[i];
        m ++;
    }
    // 2020.10.1
    sum ++, m ++;
    // 天数 + 月份初一数 + 星期一数 - 初一和星期一重复数
    cout << sum + m + (sum + 6) / 7 - k << endl;
    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值