文章目录

  • 蓝桥杯备赛--AcWing 668. 游戏时间2
    • lanqiao备赛系列说明
    • 题目
      • 题目描述
      • 输入格式
      • 输出格式
      • 数据范围
    • 下面进行解法思路的详解(这里提供三种思路及解决方案)
      • 一、直接按照时间属性进行讨论(最复杂考虑的情况最多)
        • 1. 思路
        • 2. 图示分析
        • 3. 实现代码(C++)
      • 二、直接把时间问题间接转化为数量问题
        • 1. 思路
        • 2. 具体解决
        • 3. 实现代码(C++)
    • over

蓝桥杯备赛–AcWing 668. 游戏时间2

lanqiao备赛系列说明

  • 这是第一篇备赛blog 本次备赛我使用的是y总的ACwing刷题网站进行学习备赛(也算是给y总打广告了hhh)
  • 本系列的刷题还是希望以赛促学 在备赛的基础上激励自己学习更多的知识。
  • 其他不多赘述了 希望可以获奖

原题链接

题目

题目描述

读取四个整数 A,B,C,D,用来表示游戏的开始时间和结束时间。

其中 A 和 B 为开始时刻的小时和分钟数,C 和 D 为结束时刻的小时和分钟数。

请你计算游戏的持续时间。

比赛最短持续 1 分钟,最长持续 24 小时。

输入格式

共一行,包含四个整数 A,B,C,D。

输出格式

输出格式为 O JOGO DUROU X HORA(S) E Y MINUTO(S),表示游戏共持续了 X 小时 Y 分钟。

数据范围

0≤A,C≤23,
0≤B,D≤59
输入样例1:

7 8 9 10

输出样例1:

O JOGO DUROU 2 HORA(S) E 2 MINUTO(S)

输入样例2:

7 7 7 7

输出样例2:

O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)

输入样例3:

7 10 8 9

输出样例3:

O JOGO DUROU 0 HORA(S) E 59 MINUTO(S)

下面进行解法思路的详解(这里提供三种思路及解决方案)

一、直接按照时间属性进行讨论(最复杂考虑的情况最多)

1. 思路

对于此题目来说 如果根据时间属性进行讨论 又可以分为两大子属性–小时和分钟。
对于这样两个属性进行分析时,都需要考虑如果开始时间的分钟比结束时间分钟少的情况(这种情况就需要在小时位上借一);
那么针对两种情况进行简单分析可知 对分钟进行分类讨论更方便(情况容易合并处理+小时需要减一也是分钟情况进行控制的);

2. 图示分析

  1. 对hour的讨论
  2. 对min的讨论

    对上面两种情况分析之后容易发现,对分钟进行分析最为科学有效(即按照是否进行“借位”进行分类)。

3. 实现代码(C++)

# include <iostream>using namespace std;int main(void){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);int hour,min;if(b<d){min = d-b;if (a<=c) hour = c-a;else hour = (24-a)+c;}else if (b>d) {min = (60-b)+d;if (a<c) hour = c-a-1; //注意此处的所有情况都需要减一(对小时来说)因为分钟的缺失需要借1else hour = (23-a)+c;}else {min = 0;if (a<c) hour = c-a;else hour = (24-a)+c;}printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",hour,min);return 0;
}

二、直接把时间问题间接转化为数量问题

1. 思路

主要思路就是绕过小时和分钟这两个不同单位之间的换算,把两个时间全部换算为分钟制度,以此避免了借位这一头疼的问题。

2. 具体解决

具体解决又两个方法,个人更推荐第二种(也就是y总的处理方式)

  • 对两个时间点换算后的分钟值进行比较分类;
  • 对两个时间点换算后做差的值的正负进行处理(直接对与spend_time的分类更为优雅,也体现了单出口这一特性)。

3. 实现代码(C++)

#include <iostream>using namespace std;int main(void){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);int t1,t2,t;//t1为第一个时间换算为分钟 //t2为第二个时间换算为分钟//t为相差时间的分钟 t1 = a*60+b;t2 = c*60+d;if(t1<t2){t = t2-t1;printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",t/60,t%60);}else{t = (1440-t1)+t2;printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",t/60,t%60);}return 0;
}
//y总的代码 666 直接把目光放到对于spend_time的处理上
#include <iostream>using namespace std;int main(void){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);int start,end,spend_time;start = a*60+b;end = c*60+d;spend_time = end-start;if(spend_time<=0) spend_time += 1440;printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",spend_time/60,spend_time%60);return 0;
}

over

蓝桥杯备赛--AcWing 668. 游戏时间2相关推荐

  1. 蓝桥杯备赛(五) 双指针,BFS与图论

    蓝桥杯备赛(五) 双指针,BFS与图论 一.双指针 1.Acwing 1238. 日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行. 其中每一行的 ...

  2. 【蓝桥杯备赛】历年真题解答+知识点总结

    文章目录 历年真题 算法思维 1. 模拟 1.1日期处理 1.1.1 解法一:win自带的计算器 1.1.2 解法二:Excel+手算 1.1.3 解法三:代码实现 1.2 全排列 1.3 判断回文数 ...

  3. 蓝桥杯备赛 | 官方题库基础练习(含VIP试题)试题+答案(共33题)

    引言 最近在进行蓝桥杯python组的备赛学习,做了官方题库中的基础练习,包括VIP题库,下面是所有试题和AC代码,所有代码都已经通过测试(VIP试题的测试方法见https://blog.csdn.n ...

  4. 蓝桥杯备赛经验分享---如何拿蓝桥国一?

    好久没有正儿八经地写过博客了,今天分享一些自己学习算法的一些经验吧(虽然我很菜 !(OvO)!) step1: 1.你已经有一定的语言基础了,最好对C++/java语法比较熟悉: 2.可以较为熟练地使 ...

  5. Java在ACM竞赛中的技巧(蓝桥杯备赛总结)

    前言:笔者在这段时间准备蓝桥杯竞赛,由于个人原因选择Java作为语言,刷题中也是不断感到Java有些语法还是不够方便(非常羡慕隔壁C++的STL-),不过有些常见的技巧/方法/模板,也是自己做了些总结 ...

  6. 蓝桥杯备赛(网站推荐和一些资料)

    - 首先我唠叨两句,自己对于蓝桥杯的看法 有很多人说,蓝桥杯300报名费会不会太贵了,他们甚至直接称之为"圈钱杯",(可以参加校赛,然后学校付钱)这点我不做过多评论,毕竟事实摆在那 ...

  7. 蓝桥杯备赛笔记-规律题

    今年大三,开始准备蓝桥杯大赛,在做了第七届以及第六届的题以后,对于蓝桥杯的考点以及考查方式有了一定的了解,这里做一个小结. 蓝桥杯的考察点每年都会考三类题型,第一种是规律题,典型特征是给出一个变化情况 ...

  8. 【蓝桥杯单片机笔记】蓝桥杯备赛资料

    资料目录 资料都是来源自网络,侵删 下载链接 提取码:01xh 蓝桥杯必背 sfr AUXR = 0x8e; sfr P4=0xC0; //矩阵键盘 DS18B20 可添加到main函数里面 void ...

  9. 《蓝桥杯备赛》CT117E嵌入式竞赛板LCD驱动库的使用(带完整源码)

    声明:开发板为蓝桥杯CT117E Rev 1.1,资源只用于学习用途 1.蓝桥杯LCD驱动库(官方提供) lcd.c /*程序说明: CT117E嵌入式竞赛板LCD驱动程序软件环境: Keil uVi ...

最新文章

  1. jieba中文分词源码分析(四)
  2. modernizr 支持html5,使用modernizr.js检测浏览器对html5以及css3的支持情况
  3. linux 文件和打印机共享文件夹,linux服务器向windows客户端提供文件/目录及打印机共享...
  4. 【转】Matlab axis用法
  5. JavaScript 和 typeScript 中的 import、from
  6. K8S从懵圈到熟练 - 节点下线姊妹篇
  7. 存储如何做远程服务器数据备份_如何选择存储用的服务器?
  8. matlab repmat_三行MATLAB实现动漫风格照片
  9. gwas snp 和_Science | 群体研究新思路:De novo + GWAS
  10. 分布式统一框架的设计与实现(数据库)
  11. 计算机技术服务的增值税税率,咨询系统集成技术服务税率
  12. base64-图片传输
  13. python中系统找不到指定文件怎么办_python 系统找不到指定的文件
  14. 敬业签电脑桌面便签软件怎么绑定手机号码?
  15. unity2.5D动画学习笔记(一):添加人物四向移动动画及脚本
  16. 无法打开U盘中的虚拟机
  17. 门头沟的《一出好戏》
  18. 记录高德地图H5导航
  19. 2021_RecSys_Together is Better: Hybrid Recommendations Combining Graph Embeddings and Contextualized
  20. daas 数据即服务_什么是daas

热门文章

  1. 李翔敏:城市停车管理的五点困境、六大展望与三项思考
  2. 游戏中支线任务的设计Pt.1: 如龙0——海量支线搭建起来的不夜城
  3. Spring:从零开始的Cloud生活(一)——Eureka 深入理解
  4. Avanci许可平台新增SK电讯、华硕电脑和大唐移动三家专利权人
  5. 通网网站被大规模挂马 15个频道中病毒
  6. repeater的使用方法详解
  7. 【Java基础】· 集合习题详解
  8. JAVA创建随机数的两种方法
  9. idea 注释头部设置24小时
  10. 使用Echarts实现圆环图