题目描述
学校和 yyy 的家之间的距离为 𝑠 米,而 yyy 以 𝑣米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 1010 分钟的时间进行垃圾分类。
学校要求必须在上午 8:008:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
输入格式
一行两个正整数 𝑠,𝑣分别代表路程和速度。
输出格式
输出一个 2424 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MMHH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 00。
输入输出样例
输入 #1
100 99
输出 #1
07:48
说明/提示
对于 100%100% 的数据,1≤𝑠,𝑣≤10^4。
这题要注重审题,下图为错误代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int hh=7,mm=60,s,v,hs;
cin>>s>>v;
hs=s/v+10;
hh-=hs/60;
mm-=hs%60;
if(hh<10){
cout<<"0"<<hh<<":";
}else{
cout<<hh<<":";
}
if(mm-1>9){
cout<<mm-1;
}else{
cout<<"0"<<mm-1;
}
return 0;
}
错在没有好好审题。
题目中说“提前的时间不会超过一天(24小时)“,但学校要求为早上8:00前到,所以可能存在跨1天的情况。
#include<bits/stdc++.h>
using namespace std;
int main(){
int hh=7,mm=60,s,v,hs;
cin>>s>>v;
if(s%v==0){
hs=s/v+10;
}else{
hs=s/v+11;
}
if(hs>480){
hh=23;
mm=60;
hh-=(hs-480)/60;
mm-=(hs-480)%60;
}else{
hh-=hs/60;
mm-=hs%60;
}
if(hh<10){
cout<<"0"<<hh<<":";
}else{
cout<<hh<<":";
}
if(mm>=10){
cout<<mm;
}else{
cout<<"0"<<mm;
}
return 0;
}
此题若将”提前的时间不会超过一天“去除,那么难度会更高。