直接把注释当草稿用。
回头刷入门题单被小学数学难飞了,至今未知代码错因,请大佬指点。
#include<bits/stdc++.h>
using namespace std;
int s,v,h,m,t;
//P5707
int main(){
cin>>s>>v;
//8时00分(是这么读吗。。)-10分=7时50分=(7*60+50)分钟=470分钟
//求时间公式t=s/v
//(带单位)t分钟=s米/v米每分钟
//m=470-s/v;
//一天1440分钟
//08:00~24:00 960分钟
if(s/v<470){
if(s%v!=0){
t=470-s/v-1;
}
else{
t=470-s/v;
}
h=t/60;
m=t%60;
if(m==60){
m=0;
}
if(m<10) cout<<'0'<<h<<':'<<'0'<<m;
else cout<<'0'<<h<<':'<<m;
}
else{
if(s%v!=0) t=1440-480-(s/v-1-470);
else t=1440-480-(s/v-470);
h=(t-480)/60;
m=(t-480)%60;
if(m==60){
m=0;
}
if(h<0){
h+=24;
}
if(h<10){
if(m<10) cout<<'0'<<h<<':'<<'0'<<m;
else cout<<'0'<<h<<':'<<m;
}
else{
if(m<10) cout<<h<<':'<<'0'<<m;
else cout<<h<<':'<<m;
}
}
return 0;
}
/*
情况1:当s/v<470时
day n-1 day n
08:00 00:00 07:50 08:00
|________________|++++?****|___|
\----v---/
470 min
\--------------v--------------/
1440 min
此时+段(分钟)=470-s/v
情况2:当470<s/v时
day n-1 day n
08:00 00:00 07:50 08:00
|__________?*****|*********|___|
\----v---/
470 min
\--------------v--------------/
1440 min
此时时间(分钟)=1440-480-(s/v-470)
*/