题目链接:https://cn.vjudge.net/problem/HDU-5705
题意:最早出现时针和分针角度为a的时间
题解:枚举秒针,一秒一秒的走,60*60*24 复杂度 可以接受,要么恰好符合,要么找第一个比他大的前一秒
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h,m,s;
int p;
int nn=1;
while(~scanf("%d:%d:%d",&h,&m,&s))
{
scanf("%d",&p);
int ph=h,pm=m,ps=s;
double jiao,prejiao;
prejiao=-1.0*(h+1.0*m/60+1.0*s/60/60)/12*360+1.0*(m+1.0*s/60)/60*360;
if(prejiao > 180) prejiao=360-prejiao;
if(prejiao < 0) prejiao = -prejiao;
// cout<<prejiao<<endl;
int flag=0;
printf("Case #%d: ",nn++);
while(1)
{
s++;
if(s>=60)
{
s=0;
m++;
}
if(m>=60)
{
h++;
m=0;
}
if(h>=12)
{
h=0;
}
jiao=-1.0*(h+1.0*m/60+1.0*s/60/60)/12*360+1.0*(m+1.0*s/60)/60*360;
if(jiao>180) jiao=360-jiao;
if(jiao<0) jiao=-jiao;
// printf("%02d:%02d:%02d\n",h,m,s);
if(jiao==p)
{
printf("%02d:%02d:%02d\n",h,m,s);
break;
}
else if(prejiao != p && (jiao-p) * (prejiao-p) < 0)
{
printf("%02d:%02d:%02d\n",ph,pm,ps);
break;
}
prejiao=jiao;
ph=h;
pm=m;
ps=s;
}
}
return 0;
}