ZJU2680 - Clock 任意时刻时钟夹角
2008-04-18 14:27
357 查看
题目大意:
给出5个时间hh:mm,按照时针与分针的夹角排序,输出排在中间(第三) 的时间。(0<=hh<=23,0<=mm<=59)
分析:
问题就是求任意时刻的时钟夹角。很简单,很快写完代码提交,WA……
郁闷了好久,最后在衡阳八中论坛上花了10块钱金币看了别人代码才发现自己犯了低级错误……
如果分针不在0位置的话,时针是不在整点位置的。
--------------------------------------------------------------------------------------------
/*
ZJU2680 Clock
*/
#include <stdio.h>
#include <stdlib.h>
#define N 5
#define PE 0.000001
typedef struct{
int h,m;
}Time;
Time a
;
inline double ABS(double x){
return x>0?x:-x;
}
double toAngle(Time t){
double ch = ((t.h<12?t.h:t.h-12)/12.)*360. + (t.m/60.)*30.;
double cm = (t.m/60.)*360.;
double angle = ABS(ch-cm);
if(angle>180.) return 360-angle;
else return angle;
}
int cmp2(Time a,Time b){
if(a.h==b.h) return a.m-b.m;
else return a.h-b.h;
}
int cmp(const void *A,const void *B){
double angA = toAngle(*(Time*)A);
double angB = toAngle(*(Time*)B);
if(angA<angB-PE) return -1;
if(angA>angB+PE) return 1;
return cmp2(*(Time*)A,*(Time*)B);
}
int main()
{
int i,j,k,m,n,T;
scanf("%d",&T);
while(T--){
//input
for(i=0;i<N;i++)
scanf("%d:%d",&a[i].h,&a[i].m);
//sort
qsort(a,N,sizeof(Time),cmp);
//output
printf("%02d:%02d/n",a[2].h,a[2].m);
}
return 0;
}
给出5个时间hh:mm,按照时针与分针的夹角排序,输出排在中间(第三) 的时间。(0<=hh<=23,0<=mm<=59)
分析:
问题就是求任意时刻的时钟夹角。很简单,很快写完代码提交,WA……
郁闷了好久,最后在衡阳八中论坛上花了10块钱金币看了别人代码才发现自己犯了低级错误……
如果分针不在0位置的话,时针是不在整点位置的。
--------------------------------------------------------------------------------------------
/*
ZJU2680 Clock
*/
#include <stdio.h>
#include <stdlib.h>
#define N 5
#define PE 0.000001
typedef struct{
int h,m;
}Time;
Time a
;
inline double ABS(double x){
return x>0?x:-x;
}
double toAngle(Time t){
double ch = ((t.h<12?t.h:t.h-12)/12.)*360. + (t.m/60.)*30.;
double cm = (t.m/60.)*360.;
double angle = ABS(ch-cm);
if(angle>180.) return 360-angle;
else return angle;
}
int cmp2(Time a,Time b){
if(a.h==b.h) return a.m-b.m;
else return a.h-b.h;
}
int cmp(const void *A,const void *B){
double angA = toAngle(*(Time*)A);
double angB = toAngle(*(Time*)B);
if(angA<angB-PE) return -1;
if(angA>angB+PE) return 1;
return cmp2(*(Time*)A,*(Time*)B);
}
int main()
{
int i,j,k,m,n,T;
scanf("%d",&T);
while(T--){
//input
for(i=0;i<N;i++)
scanf("%d:%d",&a[i].h,&a[i].m);
//sort
qsort(a,N,sizeof(Time),cmp);
//output
printf("%02d:%02d/n",a[2].h,a[2].m);
}
return 0;
}
相关文章推荐
- [hdu5387 Clock]时钟夹角问题
- MFC中BMP图片旋转任意角度、用于绘制模拟时钟表针
- hdu2076--时钟夹角
- 计算时钟的夹角
- **arm 时钟(CLOCK)和电源管理(POWER MANAGEMENT )
- ZOJ 2680 Clock(数学)
- [Android] 任意时刻从子线程切换到主线程的实现原理及加强版
- 计算任意时刻格林尼治视恒星时角
- 边沿检测,时钟任意分频,
- C语言学习之时钟函数clock()函数
- 时钟夹角
- 时钟——clock
- 基于TI-RTOS的CC2650DK开发(15)---Clock(时钟)
- 帮助你生成超酷计时器和时钟效果的jQuery插件 - FlipClock.js
- 浅析linux设备驱动的clock(时钟)的注册
- 05 - 基本控件:Clock时钟(AnalogClock、DigitalClock)、Chronometer计时器
- hone hone clock 人体时钟
- STM32L0 复位和时钟控制 Reset and clock control (RCC)
- MFC中BMP图片旋转任意角度、用于绘制模拟时钟表针
- ZOJ 2680 Clock()数学