【暑期基础3】X HDU 2076 夹角有多大(题目已修改,注意读题[sic] )

来源:互联网 发布:屠龙战记翅膀进阶数据 编辑:程序博客网 时间:2024/05/18 00:52

题意

给出一个时间,格式为“时 分 秒”,求时钟上这个时间的时针和分针的夹角。


思路

计算从 0 时 0 分 0 秒到所给时间,时针、分针扫过的角度。具体如下表:(单位:度)

项目 时针 分针 秒针 时 30 1/2 1/120 分 360 6 1/10 秒 3600 60 6

所以,可以知道 ah 、am(时针、分针扫过的角度,a 指 angle)

ah = h * 30 + m * 0.5 + s * 1/120.0 ;
am = m * 6 + s * 1/10.0;

我第一次提交时 WA 了,因为忘记考虑时针扫过的角度可能大于 360 度,所以这里加了一个判断:

ah = ( ah >= 360 ) ? ah - 360 : ah;

最后是输出结果:

时针和分针的夹角等于时针、分针扫过的角度(不超过 360 )的夹角或 360 减去这个夹角。

AC 代码 *

#include <stdio.h>int main() {    int h, m , s, t;    double ah, am;    scanf("%d", &t);    while ( t-- ) {        scanf("%d%d%d", &h, &m, &s);        ah = h * 30 + m * 0.5 + s * 1/120.0 ;        am = m * 6 + s * 1/10.0;        ah = ( ah >= 360 ) ? ah - 360 : ah;        am = ( am >= 360 ) ? am - 360 : am;        if ( ah > am ){            printf("%d\n" , ah - am > 180 ? (int)( 360 - ( ah - am )) : (int)( ah - am ) );        } else {            printf("%d\n" , am - ah > 180 ? (int)( 360 - ( am - ah )) : (int)( am - ah ) );        }    }    return 0;}

* 注:在 HUST 的 Virtual Judge 上测试 AC

0 0