本内容纯作者吃饱了没事干做出来的,仅供娱乐和思路参考(当然代码肯定是AC了)

最近我想重新提升一下自己的编程能力,想选一个题量比较精炼的平台,所以就用了洛谷。

题目描述

学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。

在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。

学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。

由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

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

输出格式

输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。

输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。

如果按照题单来做题的话,这个问题出现在顺序结构这一栏中。因此本人尝试不使用顺序结构以外的其它结构

按照正常思路首先需要计算行走所花费的时间,也就是路程除以速度加上额外的时间,即s/v+10。但很显

然,整除运算并没有我们想的这么简单:

如果s能够被v整除,那么就是按照正常的运算;如果不能整除,那么还需要额外花费一分钟的时间,即s/v+10+1

按照正常思路很明显需要用到条件分支,这里我们可以使用bool值巧妙地得到结果。

t=s/v+10+(bool)(s%v);

接下来就是要把它分别换算成

很容易能想到,这里可以分别使用60整除60取模来得到所需要的值。

min=t%60;
h=t/60;

接下来就是求出在8:00前能够到达的最晚时间。我们可以将8:00等价于7:60进行运算。因此只需要将小时的数值和分的数值分别与之相减即可。

h=7-h
min=60-min

最终,题目还要求需要用到标准的 HH:MM 格式,因此你可能还需要setw()setfill()函数进行位置填充。

按照以上的思路,你满怀信心地提交代码,最终成功地发现没有通过

不知道你发现没有,假如他恰好只花了一个小时的时间,那根据上面的算法,得到的最终结果是 06:60,这非常不科学。所以我们需要进行合适的进位。

首先是对分的数值进行进位,这里也可以使用60取模实现

min=(60-min)%60

相应的,当min的数值取0的时候,h需要进位。(不存在总时间为0的情况,他还需要分类垃圾)这里可以通过取反来得到需要的bool值。所以我们可以把前面的h修改成:

h=t/60-((bool)(!min))

同时,题目条件说花费的时间不会超过一天,但万一他花费了23个小时,那我们根据上面的公式得到的小时数便是-16,这不科学。所以我们需要加上24小时防止出现负数;

但如果他花费的时间又小于7小时,那得到的小时数岂不是又大于24了?所以这里我们可以再次进行24取模

h=(7-h+24)%24

经过上方的调整,我们的代码终于AC了。下面放出完整代码:

//P5707 上学迟到
#include<iostream>
#include<iomanip> using namespace std; int main(){
int s,v,t,h,min; cin>>s>>v;
t=s/v+10+(bool)(s%v); min=t%60;
h=t/60-((bool)(!min));
cout<<setw(2)<<setfill('0')<<(31-h)%24<<":"<<setw(2)<<setfill('0')<<(60-min)%60<<endl;
}

同时我发现有个BUG,我最初写的这篇文章的初版(现已删)在进位时没有将小时数同步加一,也就是花费1小时行走路程的时候输出结果却是 06:00 。但是洛谷并没有这一问题的判断,依旧是让我AC。

总而言之,虽然我的代码看上去十分的简洁。但说实话,哪个人闲着没事干会这样想解题思路,条件分支放在那能不用都是神人了。

不过话又说回来,其实总有一些奇怪的问题的解决方案是需要这样奇怪的解题思路的。

仅供娱乐。

洛谷:P5707 【深基2.例12】上学迟到 (纯净的顺序结构方法)的更多相关文章

  1. 洛谷 P1478 陶陶摘苹果(升级版)【贪心/结构体排序/可用01背包待补】

    [链接]:https://www.luogu.org/problemnew/show/P1478 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他 ...

  2. 【LGR-(-8)】洛谷入门赛 #5 题解

    比赛链接 9道题. 注:题目名称中链接为题目链接,题号中链接为比赛内链接 题目编号 洛谷题号 题目名称 题目难度 A P5713 [深基3.例5]洛谷团队系统 \(\color{red}{入门}\) ...

  3. 【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛

    题目:P4715 [深基16.例1]淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了: ...

  4. 洛谷 P5706 【深基2.例8】再分肥宅水

    题目连接: P5706 [深基2.例8]再分肥宅水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我提交的: 1 #include<iostream> 2 #inclu ...

  5. 洛谷 P4478 [BJWC2018]上学路线

    洛谷 P4478 [BJWC2018]上学路线 原题 神仙题orz,竟然没有1A....容斥+卢卡斯+crt?? 首先用容斥做,记\(f[i][0/1]\)表示到i号点经过了奇数/偶数个点的方案数,因 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷P1017 进制转换

    洛谷P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 \(1*10 ...

  8. 洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions

    P1214 [USACO1.4]等差数列 Arithmetic Progressions• o 156通过o 463提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题 ...

  9. 洛谷 P1890 gcd区间

    P1890 gcd区间 题目提供者 洛谷OnlineJudge 标签 数论(数学相关) 难度 普及/提高- 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R] ...

  10. 洛谷P1220 关路灯

    洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...

随机推荐

  1. [学习笔记] 丢番图方程 & 同余 & 逆元 - 数论

    首先,他们几个有着极大的相似性.另外,他们的各自的思想都能够很好的服务于另外几个,有助于加深理解. 文中有些letax公式抽风了,全屏之后应该能看得见-- 线性丢番图方程 丢番图不是个图啊!他是个ma ...

  2. [学习笔记] LCA - 图论

    [NOIP2013 提高组] 货车运输 最大生成树+LCA+倍增 好家伙,这道题我写了一个晚上,调了两个晚上,对于这道题我颇有感触.但这道题确实好,实实在在的蓝题,让我发现了许多关于LCA的问题. 首 ...

  3. AtCoder Beginner Contest 311

    Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311) A - First ABC (atcoder.jp) 记录一下\(ABC ...

  4. SMU Autumn 2023 Round 5

    SMU Autumn 2023 Round 5 A. Everyone Loves to Sleep 把时间都转成分钟,然后存起来,二分找到离他睡觉点最近的一个时间段,减去他的睡觉点,如果最近的在第二 ...

  5. 4. 从0开始学ARM-ARM指令,移位、数据处理、BL、机器码

    <到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 关于ARM指令用到的IDE开发环境可以参考下面这篇文章 <1. 从0开始学AR ...

  6. 代码随想录Day21

    669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保留在树 ...

  7. Ubuntu16.04使用命令行安装jdk1.8

    在Ubuntu中安装jdk过于麻烦,有时设置不好可能就没有办法使用,卸载也难以卸载干净,所以这篇文章使用相对简单的命令行来安装jdk,只需简单的四个命令,省去许多麻烦,下面是方法. 进入Ubuntu打 ...

  8. 金融、支付行业的开发者不得不知道的float、double计算误差问题

    为什么浮点数 float 或 double 运算的时候会有精度丢失的风险呢? <阿里巴巴 Java 开发手册>中提到:"浮点数之间的等值判断,基本数据类型不能用 == 来比较,包 ...

  9. ai识图测试

    var code = "9392b629-0d84-43ef-9b0f-34740fb024a6"

  10. LaTeX 生成黑底白字的 PDF

    最近需要深夜看论文,然而白底的 PDF 看久了眼睛很难受,想转换成黑底的.正好我有论文的 LaTeX 源码,因此可以直接编译黑底的 PDF 出来. 使用 darkmode 宏包 CTAN 上有一个 L ...