转载 sort函数解hdu 1209
转载
原文:thanks
http://hi.baidu.com/qiaolw/blog/item/c08b245a4a737bca9d820433.html
题目大意是求时针与分针的角度,并输出中间那个的时间。
时针与分针的求法:
double ha=(h+m/60.0)*30; (如果h大于12,h=h-12)
double ma=6.0*m;
double angle=abs(ha-ma);
angle=angle>180?360-angle:angle;
代码:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
struct In{
int h,m;
double angle;
}r[10];
bool cmp(In a,In b)
{
if(a.angle!=b.angle)
return a.angle<b.angle;
else
return a.h<b.h;
}
int main()
{
freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
for(int i=0;i<5;++i){
scanf("%d:%d",&r[i].h,&r[i].m);
double H=r[i].h;
if(r[i].h>12)
H=r[i].h-12;
double ha=(H+(double)r[i].m/60.0)*30;
double ma=6.0*r[i].m;
double ret=abs(ha-ma);
ret=ret>180?360-ret:ret;
r[i].angle=ret;
}
sort(r,r+5,cmp);
printf("%02d:%02d\n",r[2].h,r[2].m);
}
return 0;
}
posted on 2011-04-10 21:23 more think, more gains 阅读(198) 评论(0) 收藏 举报
浙公网安备 33010602011771号