首页 > 代码库 > HDU 1209

HDU 1209

http://acm.hdu.edu.cn/showproblem.php?pid=1209

水题,按五个时针分针成的锐角从小到大排序,角度相同时间从早到晚,输出中间的那个

时针一小时走30度,一分钟走0.5度,分针一分钟走6度,注意是锐角,大于180要用360减回去,为避免精度出问题统一乘2拒绝小数

技术分享
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;struct node {    int hh, mm;    int ang;}kk[5];int ABS(int x) {    return x > 0 ? x : -x;}int cmp(node a, node b) {    if(a.ang == b.ang) return a.hh * 60 + a.mm < b.hh * 60 + b.mm;    return a.ang < b.ang;}int main() {    int T;    scanf("%d", &T);    while(T--) {        for(int i = 0; i < 5; i++) {            scanf("%d:%d", &kk[i].hh, &kk[i].mm);            kk[i].ang = ABS(kk[i].hh % 12 * 60 + kk[i].mm - kk[i].mm * 12);             if(kk[i].ang > 360) kk[i].ang = 720 - kk[i].ang;        }        sort(kk, kk + 5, cmp);        printf("%02d:%02d\n", kk[2].hh, kk[2].mm);    }    return 0;}
View Code

 

HDU 1209