您的位置:首页 > 其它

1156: 钟

2015-06-03 15:17 211 查看


Description

对于时钟,我们再熟悉不过了,有时针、分针、秒针三根针,用他们的位置表示当前的时间。 问题是这样的,Faith有一个电子手表,上面显示的时间格式为 hh:mm。Faith想知道手表显示的这个时间在钟上的时针和分针的夹角有多大。


Input

题目有多组输入,请处理到文件结束。 每组数据一行,格式如 hh:mm(如 11:08)


Output

输出当前时间以及相应时间时针与分针的夹角(保留到小数点后一位),以一个空格隔开。


Sample Input

00:0006:00


Sample Output

00:00 0.00

6:00 180.0

规律:

用字母和公式表示:

当时间为h点m分时,其时针与分针夹角的度数为:

(1)分针在时针前面:

m*6-(h*30+m*0.5)

(2)分针在时针后面:

(h*30+m*0.5)-h*6

依据此公式可以求出任意时刻时针与分针夹角的度数,计算起来非常便捷。如果题目中涉及到秒,我们可以先把秒换算为分,再套用上述规律和公式进行计算即可。

注意:角度都为正,角度都小于180度。

#include<iostream>
#include<cstring>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
    char n[6];
    while (cin >> n)
    {
        int h, m;
        double d;
        h = ((n[0] - '0') * 10) + (n[1] - '0');
        h = (h % 12);
        m = ((n[3] - '0') * 10) + (n[4] - '0');
        if (h * 5 > m)
        {
            d = (h * 30 + m*0.5) - m * 6;
        }
        else
        {
            d = m * 6 - (h * 30 + m*0.5);
        }
        d = fabs(d);
        if (d > 180)
        {
            d = 360 - d;
        }
        cout << n << ' ';
        cout << setiosflags(ios::fixed) << setprecision(1) << d;
        cout << endl;
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: