2 条题解
-
2
世界上最好的题解😄
#include<iostream> using namespace std; int main(){ int s=0,v=0,t=10,h=7; cin>>s>>v; if(s%v==0)t+=s/v; else t+=(s/v+1); h-=t/60; h=h<0?h+24:h; t=60-(t%60); if(h>=10)if(t==1)cout<<"0"<<h<<":00"; else if(t>=10)cout<<h<<":"<<t; else cout<<h<<":0"<<t; else if(t==60)cout<<"0"<<h<<":00"; else if(t>=10)cout<<"0"<<h<<":"<<t; else cout<<"0"<<h<<":0"<<t; return 0; }
看完别忘了点赞呦👀️
-
0
前往我的博客阅读体验更佳
题目描述
yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 () 米,而 yyy 可以以 () 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出
HH:MM
的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。输入格式
两个正整数 s,v,意思已经在题目中给定。
输出格式
hh:mm 表示最晚离开家的时间(时:分,必须输出两位,不足两位前面补0)
输入输出样例
输入 #1
100 99
输出 #1
07:48
分析
小学的匀速直线运动问题,t=s/v
但是有几个小细节
-
不要忘了加上10分钟
-
怎么输出
HH:MM
的格式?试了一下像保留小数点一样使用 C 的标准输入输出(Xchkoo 口中所说的“那套老掉牙的 cstdio”)的占位符,居然啪一下就行了 -
怎么处理时分进位?60 进制,因为不知道进几次所以用 while 循环实现就行了
-
s/v 有小数点怎么办?不能四舍五入,只能向上取整,因为迟到 分钟也是迟到。
5.千米迢迢上学的 yyy 问题:八个小时都到不了学校怎么办?当 自减变为 的时候将 赋值为 即可,由于不可能提前超过一天出发(
某学生连续赶路 余小时猝死)所以 if 即可- h 及 m 的计算问题:我的做法是赋初值
08:00
然后往回倒减分钟数,然后进位到小时位
代码
#include<bits/stdc++.h> using namespace std; int main() { int s,v; cin>>s>>v; int t=ceil(1.0*s/v); int h=8,m=-t-10; while(m<=0) { m+=60; h--; if(h<0) h=23; } printf("%.2d:%.2d",h,m); return 0; }
编辑记录
2021-08-06 18:11:00
-
- 1
信息
- ID
- 4629
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- (无)
- 递交数
- 37
- 已通过
- 20
- 上传者