004 A+B问题 【练习-详解上学迟到】

2023-11-06 04:59

本文主要是介绍004 A+B问题 【练习-详解上学迟到】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

零基础c++教程004 A+B问题 【练习-详解上学迟到】

  • 今天,我们做一道比较有难度的题,这道题有许多需要考虑到的点,需要我们逐一击破。
  • 题目提交链接:上学迟到
  • 题目搬运:

题目描述

学校和 yyy 的家之间的距离为 s s s 米,而 yyy 以 v v v 米每分钟的速度匀速走向学校。 在上学的路上,yyy 还要额外花费 10 10 10 分钟的时间进行垃圾分类。 学校要求必须在上午 8:00 \textrm{8:00} 8:00 到达,请计算在不迟到的前提下,yyy最晚能什么时候出门。 由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

一行两个正整数 s , v s,v s,v,分别代表路程和速度。

输出格式

输出一个 24 24 24 小时制下的时间,代表 yyy 最晚的出发时间。 输出格式为 HH:MM \texttt{HH:MM} HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0 0 0

样例输入

100 99

样例输出

07:48

提示

对于 100 % 100\% 100% 的数据, 1 ≤ s , v ≤ 1 0 4 1 \le s,v \le 10^4 1s,v104

思路-初版

  • 我们可以定义一个变量times(为什么不用time呢?因为time是一个的名字,不能当变量名),表示我们的出发时间,又因为这里时间的最小单位是分钟,所以times的单位就定为分钟。
  • 这道题说了:“提前的时间不超过一天。”所以,times的初始值可以定为 8 × 60 + 24 × 60 = 1920 min ⁡ 8\times60+24\times60=1920\min 8×60+24×60=1920min,从前一天的0点算起,到这一天上午8点的时间。
  • 提前的时间就是垃圾分类的10分钟加上去学校的时间,也就是 s ÷ v s\div v s÷v在时间的基础上减去就行了。
  • 时间要变成24小时制的小时和分钟。由于不算天数,所以时间要在24小时也就是 24 × 60 = 1440 min ⁡ 24\times60=1440\min 24×60=1440min以内。接着,小时数就是 总 分 钟 数 ÷ 60 总分钟数\div60 ÷60(int类型下,他会自动取证),分钟数就是 总 分 钟 数 % 60 总分钟数\%60 %60
  • 输出时,由于要两位,前面要加前导0,就要用到我们的“%02d”。
初版代码
#include <iostream>
using namespace std;
int main()
{int s,v,times=1920,hh,mm;scanf("%d%d",&s,&v);times=times-10-s/v;times%=1440;hh=times/60;mm=times%60;printf("%02d:%02d",hh,mm);return 0;
}
  • 结果它就… 红了一片!(AC代表正确,WA代表错误)
    在这里插入图片描述

思路-终极版

  • 这是因为,int类型除出来的是默认向下取整的,而要“提前一点”,需要向上取整。这是我们就要用到小数和向上取整——ceil。
ceil
  • ceil是用来向上取整的一个东东,可以将一个小数变成比这个小数的最小整数。
  • 它还有一个同伴,向下取整——floor,不过默认是向下取整,所以我们就不经常用它。
  • 它们都是数学相关的东西,所以要include <cmath>(cmath是c++里关于数学的一个头文件)
新的操作符
  • 为了方便我们写这一行代码:a=a-3,我们可以把它改成这样:a-=3,这叫做减等于。
  • 同样的,还有加等于,乘等于,除等于,mod等于——a+=2a*=5a/=4a%=6
  • 如果这样被操作的数(后面的数)是1,还可以更简写成这样:a++a--a**a//没必要,也不能用)。
终极代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{double s,v;int times=1920,hh,mm;scanf("%lf%lf",&s,&v);times-=10+ceil(s/v);times%=24*60;hh=times/60;mm=times%60;printf("%02d:%02d",hh,mm);return 0;
}
  • 终于一片绿了!
    在这里插入图片描述

今天就讲到这里,大家一定要提高自己的分析能力!

这篇关于004 A+B问题 【练习-详解上学迟到】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354590

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499