题目链接:点击打开链接
一个基于时钟的模拟题,将时钟分为3600份,从起点分别顺时针和逆时针走一遍即可
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int clock[3601];
int h, m, s, t1, t2;
void solve()
{
memset(clock,0,sizeof(clock));
if(m==0) m=60;
if(s==0) s=60;
clock[(m*60+s)%3601]=-1, clock[s*60]=-1;
clock[(300*h+m+(s+59)/60)%3601]=-1;
for(int i=t1*300;!clock[i%3601];i++)
clock[i%3601]=1;
for(int i=t1*300-1;!clock[i%3601];i--)
{
if(i==0) i=3600;
clock[i%3601]=1;
}
if(clock[t2*300]) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
while(cin>>h>>m>>s>>t1>>t2)
{
solve();
}
return 0;
}