【深基2.例12】上学迟到
题目描述
学校和 yyy 的家之间的距离为 s s s 米,而 yyy 以 v v v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 10 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 \textrm{8:00} 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
1.学习总结
问题比较简单,可以使用总时间减去yyy耗费的时间,再转换成HH:MM的形式即可。因为不可能提前超过一天,所以总的时间为60*(24+8),耗费的时间则需要在s/v的基础上,再进行向上取整(不能进行向下取整,肯定会迟到)。
2.易错点
容易向下进行取整,导致错误;对向上取整的方法不熟悉。
3.向上取整方法总结
对余数进行检查(比较简单的方法,使用ceil()函数的方法未展示,可能导致精度问题)
{
if(s%v==0)
{
time=s/v;
}
else
{
time=s/v+1;
}
}
4.代码部分
#include<iostream>
using namespace std;
int main()
{
int s,v;
cin>>s>>v;
int time=0;
int spare=1;//用作四舍五入
if(s%v==0)
{
time=s/v+10;
}
else
{
time=s/v+10+spare;
}
int alltime=60*(24+8);
int lesstime=alltime-time;
int H,M;
H=lesstime/60%24;
M=lesstime%60;
printf("%02d:%02d",H,M);//格式输出建议使用C语言
return 0;
}