注解
1、钟表是12进制。
2、计算时针与分针的角度。时针每分钟转0.5度,分针每分钟转6度。二者之差的绝对值就是之间的角度。因为题目要求取小于180的角度,因此如果度数大于180,用360度减去这个度数就是最终的度数。
代码
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
struct Time {
int hh;
int mm;
double angle;
};
int compare(Time t1, Time t2) {
if(t1.angle!=t2.angle) {
return t1.angle<t2.angle;
} else {
if(t1.hh!=t2.hh) {
return t1.hh<t2.hh;
} else {
return t1.mm<t2.mm;
}
}
}
const int len = 5;
int main() {
int T;
scanf("%d", &T);
for(int i=0; i<T; i++) {
Time t[len];
for(int j=0; j<len; j++) {
scanf("%d:%d", &t[j].hh, &t[j].mm);
double hh1 = t[j].hh;
if(t[j].hh>=12) {
hh1 -= 12;
}
hh1 = hh1*30 + t[j].mm*0.5;
double mm1 = t[j].mm*6;
t[j].angle = abs(hh1-mm1);
if(t[j].angle>180) {
t[j].angle = 360 - t[j].angle;
}
}
sort(t, t+len, compare);
printf("%02d:%02d\n", t[2].hh, t[2].mm);
}
return 0;
}