『题解』Luogu P8071 [COCI2009-2010#7] SPAVANAC
题目大意
给定 \(24\) 小时制下的时间 H:M
,输出 \(24\) 小时制下比该时间早 \(45\) 分钟的时刻。
思路
很简单的一道模拟题。
先来考虑小时,若 \(M < 45\),那么小时数要减去一。当小时数减去一后,需要考虑负数情况,加上一个判断 \(H < 0\),若成立,则将 \(H\) 加上 \(24\),表示到了前一天。然后,\(M\) 需要减去 \(60\) 再加上 \(45\),简便一点就是 \(M\) 加上 \(15\)。
若 \(M \ge 45\),将 \(M\) 减去 \(45\) 即可。
代码
#include <iostream>
using namespace std;
int h,m;
int main(){
cin >> h >> m;
if(m<45){ // 分钟小于 45,则需要处理
if(--h<0){ // 若已经到了前一天,则将小时数加上 24
h+=24;
}
m+=15; // +15 相当于 +60-45
}else{
m-=45; // 否则可以直接减
}
cout << h << " " << m << endl;
return 0;
}