洛谷P5707-上学迟到
这题很简单但是对我这种平时很少刷算法题的来说也是想了好一会,这个题需要注意的是
- 小时和分钟不足10都要补0
- 可能提前一天
- 不能直接使用/需要向上取整,即1.2分钟要变成2而不是1
- 判断是在前一天之后要再减去24*60
这题主要是先把时分制先全部变成分钟另外加上一天的,这点是看了别人的才想明白,用8小时加24小时变成分钟后,减去走路和扔垃圾花费的时间之后还要判断时候大于24小时对应的分钟数,来确定是不是前一天就出发了,如果是前一天就出发了要重新减去24小时对应的分钟数,在通过求模运算和求余数运算算出分钟数和小时数,判断分钟数和小时数是否小于10,如果小于是就补0,这就是这个题的思路
#include <iostream>
#include <cmath>
using namespace std;
double s,v,m;
int n,a,t,b;
const int throw_waste = 10;
int main()
{
cin>>s>>v;
n = 8*60+24*60;//把一天+八小时换算成分钟
t = ceil(s/v)+10;//计算走路的时间加上扔垃圾的时间
n = n - t;//去掉走路的时间和扔垃圾的时间,即需要提前的分钟
if(n>=24*60)//判断在前一天
n-=24*60;
b = n%60;//出发的分钟
a = n/60;//出发的小时
if(a<10)//判断小时需要补0
{
if(b<10)//判断分需要补0
cout<<"0"<<a<<":0"<<b;
else
cout<<"0"<<a<<":"<<b;
}
else
{
if(b<10)//判断分需要补0
cout<<a<<":0"<<b;
else
cout<<a<<":"<<b;
}
return 0;
}