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;
}