蓝桥杯--跑步计划

问题描述

小蓝计划在某天的日期中出现 11 时跑 55 千米,否则只跑 11 千米。注意日期中出现 11 不仅指年月日也指星期。

请问按照小蓝的计划,20232023 年小蓝总共会跑步锻炼多少千米?例如,55 月 11 日、11 月 1313 日、1111 月 55 日、44 月 33 日 (星期一) 小蓝会跑 55 千米,而 55 月 2323 日小蓝会跑 11 千米 (示例日期均为 2023 年)


思路: 知道2023年是平年,四月三日是星期一 , 求出到四月三日一共的天数,再求七天的余数. 根据这个余数可以判断某天是否为星期一

所以,大致思路如下

cpp 复制代码
#include <iostream>
using namespace std;
int DAY(int month, int day)//由月和日,直接求天数
{
    int add = 0;
    int M[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    for (int i = 0; i < month; i++)
    {
        add += M[i ];
    }
    add += day;
    return add;
}
int main()
{
    int b = DAY(4, 3) % 7;//已知(4,3)为星期一,求余数
    int M[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int day;
    int c = 0;//重复的
    int d = 0;//all 1
    int e = 0;//all 2 
    for ( int x = 1; x <=12; x++)
    {
        for (int y = 1; y <=M[x-1]; y++)
        {
            if (x == 1 || x/10==1 || y / 10 == 1 || y % 10 == 1)
            {
                d++;//月,日总数
                day = DAY(x, y);
                if (day % 7 == b)                        
                {
                    c++;//重复的
                }
            }
        }
    }
    for (int i = 1; i <= 365; i++)//求星期一总数
    {
        if (i  % 7 == b)
        {
            e++;
        }
    }
    int f = d - c + e;//求总和
    f = f * 5 + 365 - f;
    cout << f<< endl;
    return 0;
}
相关推荐
间歇性努力持续性发呆的野生快乐选手1 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
旖旎夜光1 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
乐观勇敢坚强的老彭3 小时前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
我变成萤火虫3 小时前
河南萌新联赛2026第(三)场:郑州轻工业大学
数据结构·c++·算法·贪心算法·stl·深度优先·哈希算法
buhuizhiyuci4 小时前
【Linux 篇】数字世界的水流蓄水池 —— IO 缓冲区机制深度实战解析
linux·运维·服务器·c++
liulilittle4 小时前
LLM 推理引擎与内核系统工程原理
c++·ai·llm·内存·memory·core·kernel
啦啦啦啦啦zzzz4 小时前
moduo网络库 Acceptor TcpConnection
服务器·网络·c++·reactor·网络库
键盘会跳舞4 小时前
C++:右值引用与移动语义源码级深度拆解——现代C++性能优化的语言基石
c++·右值引用·移动语义
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的虚函数和多态
java·c++·面试
lidtao5 小时前
青少年信息学奥赛C++四阶段学习路线(L1-L4完整体系)
c++·学习·软件工程·教培资源分享