算法题每日一练---第13天:跑步锻炼

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

一、问题描述


小蓝每天都锻炼身体。

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

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


二、题目要求


考察

日期判断,数学思想
建议用时10~20min




三、问题分析


这道题和算法题每日一练---第5天:星系炸弹总体的思想差不多,多了一个限制条件。就是再编写代码的时候要对于月初和星期一的情况需要特殊处理判断,当这一天不是月初、不是星期一的情况,跑步天数只是增加一天。否则,跑步天数增加两天。

核心算法如下:

if(q!=1&&d!=1)//q代表星期几,d代表第几天{
sum+=1;//sum代表跑步天数,跑步天数加一}
elsesum+=2;//否则,跑步天数加二


四、编码实现


#include<iostream>usingnamespacestd;
longlongintsum=0;//额外定义sum值 intmain()
{
inti,y=2000,m=1,d=1,q=6;//初始化定义年份、月份、天数 inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//12个月份的天数 while(1)
    {
if(y==2020&&m==10&&d==1)//时间到了规定日期         {
cout<<sum+2;//输出结果 exit(0);//退出程序         }
d++;//天数加一 q++;//日期数加一 if(y%400==0||y%4==0&&y%100!=0)//满足闰年的要求 a[2]=29;//天数变成29 elsea[2]=28;//天数变成28 if(d>a[m])//天数大于当前月份         {
d=1;//天数变为1 m++;//月份++         }
if(m>12)//月份大于12         {
m=1;//月份变为1 y++;//年份++         }
if(q>7)//星期大于7         {
q=1;//变为星期一         }
if(q!=1&&d!=1)//不为星期一并且不为月份第一         {
sum+=1;
        }
elsesum+=2;
    }
return0;
}


五、输出结果


输出结果为:8879


相关文章
|
1月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
69 0
|
算法 Java C++
算法竞赛100天第1天 —— 第十一届蓝桥杯省赛C/C++ B组 —— 跑步锻炼(不看会后悔的《日期年份问题三种解法 — C++和Java代码以及Excel解法》)
算法竞赛100天第1天 —— 第十一届蓝桥杯省赛C/C++ B组 —— 跑步锻炼(不看会后悔的《日期年份问题三种解法 — C++和Java代码以及Excel解法》)
313 0
算法竞赛100天第1天 —— 第十一届蓝桥杯省赛C/C++ B组 —— 跑步锻炼(不看会后悔的《日期年份问题三种解法 — C++和Java代码以及Excel解法》)
|
算法
算法题每日一练---第78天:二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target
197 1
算法题每日一练---第78天:二分查找
|
存储 算法
|
算法
算法题每日一练---第76天:丑数 l
丑数 就是只包含质因数 2、3 和 5 的正整数。
151 1
算法题每日一练---第76天:丑数 l
|
算法
算法题每日一练---第75天:Nim 游戏
你和你的朋友,两个人一起玩 Nim 游戏。
328 0
算法题每日一练---第75天:Nim 游戏
|
算法
算法题每日一练---第74天:快乐数
编写一个算法来判断一个数 n 是不是快乐数。
182 0
算法题每日一练---第74天:快乐数
|
存储 算法
算法题每日一练---第73天:加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
163 0
算法题每日一练---第73天:加一
|
算法
算法题每日一练---第72天:数字 1 的个数
给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。
232 0
算法题每日一练---第72天:数字 1 的个数