Skip to main content
Original112 words1 min

题解:P8071 [COCI 2009/2010 #7] SPAVANAC

Summary

给定 24 小时制的时刻 H 时 M 分,输出提前 45 分钟的时刻。先把分钟减去 45;若结果为负,则小时减 1、分钟加 60。若小时随后为负,再加 24 回到前一天。两次判断分别处理跨小时与跨日期,最后直接输出调整后的小时和分钟。

题意简述​

给定 2424 小时制下的时间 H:MH:M,输出 2424 小时制下比该时间早 4545 分钟对应的时刻。

解题思路​

先直接减去 4545 分钟:

M←M−45M\gets M-45

若 M<0M<0,说明要向前退 11 小时:

H←H−1,M←M+60H\gets H-1,M\gets M+60

若 H<0H<0,说明要向前退 11 天:

H←H+24H\gets H+24

参考代码​

212 Bcpp
#include <bits/stdc++.h>
using namespace std;

int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int h,m;
cin>>h>>m;
m-=45;
if(m<0){h-=1;m+=60;}
if(h<0)h+=24;
cout<<h<<' '<<m<<'\n';
return 0;
}