题解:P5707 【深基2.例12】上学迟到
题解:P5707 【深基2.例12】上学迟到
按题意模拟即可。
设速度为 \(t\),小时为 \(h\),分钟为 \(m\),求得:
-
\(t=\left \lceil \frac{s}{v} \right \rceil +10\)。
-
\(h=\left \lfloor \frac{\left \lceil \frac{s}{v} \right \rceil+10}{60} \right \rfloor = \left \lfloor \frac{t}{60} \right \rfloor\)。
-
\(m=\left \lceil \frac{s}{v} \right \rceil+10-60 \cdot \left \lfloor \frac{\left \lceil \frac{s}{v} \right \rceil+10}{60} \right \rfloor = t-60 \cdot h\)。
接下来分为 \(m=0\) 和 \(m \neq 0\) 的 \(2\) 种情况。
-
当 \(m=0\) 时,直接用 \(\textrm{8:00}\) 减去总时间的小时部分。别忘了处理跨天的情况。即如果 \(h<0\) 时,\(h=24-|h|\)。
-
当 \(m \neq 0\) 时,分钟从小时借位,\(h\) 此时变为 \(8-1-h=7-h\)。处理跨天情况同理。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
double s,v,t,h,m;
int main(){
cin>>s>>v;
t=ceil(s/v)+10;
h=floor(t/60);
m=t-h*1.0*60;
if(m!=0){
m=60-m,h=7-h;
if(h<0) h=24-abs(h);
}
if(m==0){
h=8-h;
if(h<0) h=24-abs(h);
}
if(h>=10&&m>=10) cout<<h<<":"<<m;
if(h>=10&&m<10) cout<<h<<":"<<"0"<<m;
if(h<10&&m>=10) cout<<"0"<<h<<":"<<m;
if(h<10&&m<10) cout<<"0"<<h<<":"<<"0"<<m;
return 0;
}