LQ0039 跑步锻炼日期计算+模拟

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0039 跑步锻炼日期计算+模拟相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2020初赛 C++ B组E题

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

这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

问题分析
填空题。
日期计算+模拟计算,看程序代码不解释。程序计算结果为8879。

AC的C语言程序如下:

/* LQ0039 跑步锻炼 */

#include <stdio.h>

int mdays[] = 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;

int leapyear(int year)

    return ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) ? 1 : 0;


int main()

    int week = 6, ans = 0;
    for (int year = 2000; year <= 2020; year++) 
        mdays[2] = 28 + leapyear(year);
        for (int month = 1; month <= 12; month++) 
            if (year == 2020 && month == 10) break; /* 算到2020年9月30日为止 */
            for (int day = 1; day <= mdays[month]; day++) 
                ans++;
                if (day == 1 || week == 1) ans++;
                if (++week > 7) week = 1;
            
        
    

    printf("%d\\n", ans + 2);  /* 加上2020年10月1日跑步千米数 */

    return 0;

以上是关于LQ0039 跑步锻炼日期计算+模拟的主要内容,如果未能解决你的问题,请参考以下文章

2020年第十一届蓝桥杯 - 省赛 - Python大学组 - C.跑步锻炼

LQ0018 顺子日期枚举+日期

LQ0018 顺子日期枚举+日期

LQ0032 日期问题日期计算+排序

LQ0043 第几天日期计算

如何从 HealthKit 跑步锻炼中获取海拔增益、节奏和跑步速度?