蓝桥杯C++真题之跑步锻炼

目录

前言

一、题目

二、代码及解析

1.代码

总结


前言

每天一道蓝桥杯

一、题目

小蓝每天都锻炼身体。

正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 千米。如果同时是周一或月初,小蓝也是跑 2 千米。

小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

难度: 简单   标签: 填空题, 2020, 省赛

二、代码及解析

1.代码

#include<iostream>
using namespace std;

int main()
{
    int month[12] = {31,29,31,30,31,30,31,31,30,31,30,31};//拳头骨节来记
    int year, kilo = 0;
    int num = 0;//总共过了多少天,%7求周一
    for(year = 2000; year <= 2020; year++)
    {
        if((year%100!=0 && year%4==0) || year%400==0)//年
            month[1] = 29;//二月份闰年29天
        else
            month[1] = 28;//二月份非闰年28天
        for(int j = 0; j < 12; j++)//j表示月,j = 0意味着1月
        {
            for(int k = 0; k < month[j]; k++)//k = 0意味着1日
            {
                if(k == 0 || num % 7 == 2)//1日或周一
                    kilo += 2;
                else
                    kilo += 1;
                num++;//总天数,用以求周一
                if(year == 2020 && j == 9 && k == 0)//2020/10/1这天
                    cout<<kilo<<endl;
            }
        }
    }

    return 0;
}

输出:8879  

解析:

1,首先要知道每月多少天

2,闰年怎么算

3,确定周一怎么求

4,关于最后的

if(year == 2020 && j == 9 && k == 0)
        cout<<kilo<<endl;

一开始想着算到2019/12/31,再从2020/1/1到2020/10/1重新循环3层for,后来才发现可以直接在这一天打印。。。

总结

本来想做最短路的,发现很陌生,就先把简单的先做了

路漫漫其修远兮,吾将上下而求索

为什么字数少就质量不佳呢,有些题目根本不需要那么多字数啊

救命,害,好难,话说写代码真的会上瘾的,而且当全神贯注学上几小时,进步会很快

比如一个月前我苦恼的高精度阶乘和阶乘和,现在已经觉得很简单了

比如一个半月前困扰的判断两线段相交,现在也能20分钟敲出来

比如现在刚自学了10页的线性代数,

一个月后寒假结束,毕竟学的七七八八了,卷死他们..!!//??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千帐灯无此声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值