洛谷:P5707 【深基2.例12】上学迟到 (纯净的顺序结构方法)
本内容纯作者吃饱了没事干做出来的,仅供娱乐和思路参考(当然代码肯定是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】上学迟到 (纯净的顺序结构方法)的更多相关文章
- 洛谷 P1478 陶陶摘苹果(升级版)【贪心/结构体排序/可用01背包待补】
[链接]:https://www.luogu.org/problemnew/show/P1478 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他 ...
- 【LGR-(-8)】洛谷入门赛 #5 题解
比赛链接 9道题. 注:题目名称中链接为题目链接,题号中链接为比赛内链接 题目编号 洛谷题号 题目名称 题目难度 A P5713 [深基3.例5]洛谷团队系统 \(\color{red}{入门}\) ...
- 【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛
题目:P4715 [深基16.例1]淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了: ...
- 洛谷 P5706 【深基2.例8】再分肥宅水
题目连接: P5706 [深基2.例8]再分肥宅水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我提交的: 1 #include<iostream> 2 #inclu ...
- 洛谷 P4478 [BJWC2018]上学路线
洛谷 P4478 [BJWC2018]上学路线 原题 神仙题orz,竟然没有1A....容斥+卢卡斯+crt?? 首先用容斥做,记\(f[i][0/1]\)表示到i号点经过了奇数/偶数个点的方案数,因 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷P1017 进制转换
洛谷P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 \(1*10 ...
- 洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions
P1214 [USACO1.4]等差数列 Arithmetic Progressions• o 156通过o 463提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题 ...
- 洛谷 P1890 gcd区间
P1890 gcd区间 题目提供者 洛谷OnlineJudge 标签 数论(数学相关) 难度 普及/提高- 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R] ...
- 洛谷P1220 关路灯
洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...
随机推荐
- MPTCP(三) : 在内核中启用MPTCP相关模块
在内核中启用MPTCPv1相关的模块 1. 简介 本文所涉及的均为MPTCPv1版本的MPTCP,采用的内核版本为5.18.19 需要注意的是 虽然MPTCP官方文档中提到在5.6之后的linux内核 ...
- ABC304Ex Constrained Topological Sort 题解
https://atcoder.jp/contests/abc304/tasks/abc304_h [CSP-S 2023] 种树后半部分的加强版 对于边 \((u,v)\),不妨令 $r[u]$ 对 ...
- [计算机网络] IPv6
1 IPv6 概述 引言 近期突发奇想,能不能用 IPv6 的公网地址,给家里的 NAS 做 内网穿透. 技术上是可行的.只是必须确保是 IPv6 的公网地址. 大学学的 IPv6 的知识,早就抛到九 ...
- 关于捣鼓Gentoo的一些见解
现在很少有人使用gentoo,大家对它的印象都是一个很难用的系统,我想给大家讲讲折腾Gentoo一年的心得,仅供参考 使用archlinux安装盘,genfstab生成fstab 使用gentoo-k ...
- 预设型 DP
预设型 DP <美好的一天>--青春学概论 한 잔 술에 취해 잠긴 목엔 沉醉于一杯酒 갈라지는 목소린 다시 带着沙哑的嗓音 두 잔 자기 전엔 기분 좋음 入睡前饮下第二杯让心情愉悦 ...
- 使用 nuxi add 快速创建 Nuxt 应用组件
title: 使用 nuxi add 快速创建 Nuxt 应用组件 date: 2024/8/28 updated: 2024/8/28 author: cmdragon excerpt: 通过使用 ...
- Ubuntu 更换 macOS Big Sur 主题
我们很多人使用 Mac 的原因之一是 macOS 是最像 Linux 的操作系统(bushi),而 macOS 精美的图形界面又让我们欲罢不能.那么能不能将 macOS 的图形界面搬到 Linux 上 ...
- vue自定义组件的点击事件失效
在vue开发过程中为了减少重复代码,很多时候都需要将重复的部分写成一个组件,方便调用.但是使用组件时很可能又会给该组件添加点击事件.如果直接这样写,事件则会失效: 正确写法应该是这样:
- 总结篇4:redis 核心数据存储结构及核心业务模型实现应用场景
总结篇4:redis 核心数据存储结构及核心业务模型实现应用场景 redis 和memcached 有什么区别?为什么在高并发下,单线程的redis 比多线程的效率高? mc 可以缓存图片和视频,re ...
- 用 SQL 写的俄罗斯方块游戏「GitHub 热点速览」
在开始介绍上周热门开源项目之前,要插播一条开源新闻:Nginx 已正式迁移至 GitHub. 近日,Nginx 官方宣布将 Nginx 开源项目,从 Mercurial 迁移至 GitHub 代码托管 ...