其他分享
首页 > 其他分享> > 2020年第十一届蓝桥杯省赛试题——试题D 跑步锻炼(填空题)

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;
}

标签:试题,int,31,month,蓝桥,++,sum,填空题,星期一
来源: https://blog.csdn.net/qq_43590403/article/details/115799916