针对蓝桥杯有关时间内容的求解(二)

在对时间的内容求解的过程中,我们还会遇到一种情况,就是让求特定日期的时间,比如

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝每天都锻炼身体。

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

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

 针对这个题,我们可以将它转化为求特殊的日期值,即求周一和月初

#include<stdio.h>
int main()
{
    int year,moth,day,sum=0,week=6;//定义变量分别表示年,月,日,星期
    int moths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    for(year=2000;year<=2020;year++)
     {
        if(year%4==0&&year%100!=0||year%400==0)
            {
                moths[2]=29;
            }
           else
            {
                moths[2]=28;
            }
        for(moth=1;moth<=12;moth++)
            {
                for(day=1;day<=moths[moth];day++)
                    {
                        if(day==1||week%7==1)//week%7==1,表示当天是星期一,
                            {
                                sum=sum+2;
                            }
                            else
                            {
                                sum=sum+1;
                            }
                            week++;
                        if(year==2020&&moth==10&&day==1) //到2022年10月1日输出
                            {
                                   printf("%d",sum);
                            }
                    }
            }
     }
    return 0;
}

我们在求时间的问题还会遇到一种情况,就是

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

今年的植树节(2012年 3 月 12 日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”

“把我出生的年月日连起来拼成一个 8位数(月、日不足两位前补 0)正好可以被今天的年、月、日整除!”

他想了想,又补充到:“再给个提示,我是 6月出生的。”

根据这些信息,请你帮小明算一下,他叔叔的出生年月日。

格式是年月日连成的 8位数。例如,如果是 1948 年 6 月 12 日,就写:19480612。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

这题中的日期要求是连在一起,并不是分开的,其实道理都差不多

//此题给出了限制条件6月,即无闰年的问题
#include<stdio.h>
int main()
{
    int year,day,sum=0;
    for(year=1900;year<=2012;year++)
     {
      for(day=1;day<=30;day++)
       { 
         sum=year*10000+600+day;
         if(sum%2012==0&&sum%3==0&&sum%12==0) //终止条件
          {
            printf("%d\n",sum);
          }
       }        
     } 
    return 0;
}

总结

 在面对蓝桥杯的时间问题的时候,

1.我们首先要考虑闰年问题

2.对时间进行拆分,年,月,日,星期 ,分别求,利用for循环

3.要求个个位的和采用求和算法

以上就针对蓝桥杯时间问题的三板斧,希望对大家有所帮助。

祝大家都能在蓝桥杯中取得好成绩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张謹礧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值