题解: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;
}
posted @ 2025-05-16 22:27  M1_Byte  阅读(16)  评论(0)    收藏  举报