思路

我们想要知道比 H:MH:M4545 分钟的时间就要把 MM 减少 4545
但是这题就这么简单吗?不是的,有可能提前 4545 分钟就到了上一个小时,如果 M<0M<0 就到了上一个小时。
这时,我们需要将小时 HH11,分钟 MM6060
还有可能提前 4545 分钟就到了上一天,如果 H<0H<0 就到了上一天。
这时,我们需要将小时 HH2424,因为跨天就一定垮了小时,所以不用考虑分钟的问题。

提醒

要特判跨小时和跨天的情况!

代码

#include<iostream>
using namespace std;
int h,m;
int main(){
    cin>>h>>m;
    m-=45;
    if(m<0){ //要特判跨小时的情况
        h-=1;
        m+=60;
    }
    if(h<0){ //要特判跨天的情况
        h+=24;
    }
    cout<<h<<' '<<m<<endl;
    return 0;
}
data=input().split()
data[0]=int(data[0])
data[1]=int(data[1])
data[1]-=45
if(data[1]<0): #要特判跨小时的情况
    data[0]-=1
    data[1]+=60
if(data[0]<0): #要特判跨天的情况
    data[0]+=24
print(data[0],data[1])

更新日志

upd 2022.2.15:改正了 不用跨天 这一错误,并加入了 Python 代码。虽然数据没有,但是题面说明中有 H=0H=0 的情况。