Problem Description
时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少。现在xhd知道的只有时间,请你帮他算出这个夹角。
注:夹角的范围[0,180],时针和分针的转动是连续而不是离散的。
注:夹角的范围[0,180],时针和分针的转动是连续而不是离散的。
Input
输入数据的第一行是一个数据T,表示有T组数据。
每组数据有三个整数h(0 <= h < 24),m(0 <= m < 60),s(0 <= s < 60)分别表示时、分、秒。
每组数据有三个整数h(0 <= h < 24),m(0 <= m < 60),s(0 <= s < 60)分别表示时、分、秒。
Output
对于每组输入数据,输出夹角的大小的整数部分。
Sample Input
2
8 3 17
5 13 30
8 3 17
5 13 30
Sample Output
138
75
数学能力:在换算分针以及秒针走一个格时针分别走多大角度时我想了好久,也许大脑混沌的不行,昨晚想了好久想到烦躁,后来睡一觉问题迎刃而解了,看来在ACM竞赛时做题做不出来时出去走走也是蛮有必要的(换换思维休息一下),果然考验了心理素质和压力下的思考能力···
数据分析能力:起初我是这样的代码:(中间部分)
75
#include
<iostream>
#include
<stdio.h>
//#include<cstring>
//#include<string>
#include
<algorithm>
#include
<cmath>
using
namespace
std
;
int
main
(
void
)
{
int
t
;
cin
>>
t
;
while
(
t
--
)
{
int
h
,
m
,
s
;
double
ans
;
cin
>>
h
>>
m
>>
s
;
ans
=
(
fabs
(
(
h
%
12
)
*
30+0.5
*
m
+
(
1.0
*
s
)/
120
-
(
m
*
6+0.1
*
s
)
)
)
;
//fabs--cmath
cout
<<
(
ans
>
180
?
int
(
360
-
ans
)
:
int
(
ans
))
<<
endl
;
}
return
0
;
}
数据分析能力:起初我是这样的代码:(中间部分)
int
ans
;
cin
>>
h
>>
m
>>
s
;
ans
=
int
(
fabs
(
(
h
%
12
)
*
30+0.5
*
m
+
(
1.0
*
s
)/
120
-
(
m
*
6+0.1
*
s
)
)
)
;
//fabs--cmath
cout
<<
(
ans
>
180
?
(
360
-
ans
)
:
(
ans
))
<<
endl
;
在测试第一个数据时发现结果输出的是139,我没想太多就改成AC的代码了,但是不知道为什么,现在想想也简单,题目要求输出的是最终夹角的int部分,而上面的代码在夹角小于180度时ans就是最终结果,可是大于的时候ans不是最终结果而且已经把小数部分省略的这样使得ans的值偏小···在cout的时候最终值偏大,所以要在最后输出的时候再强制转化才是正解.