转载 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 阅读(193) 评论(0) 编辑 收藏 举报