先上題目鏈接——http://acm.hdu.edu.cn/showproblem.php?pid=2076
Problem Description
時(shí)間過的好快,一個(gè)學(xué)期就這么的過去了鞋喇,xhd在傻傻的看著表冗澈,出于對(duì)數(shù)據(jù)的渴望虏杰,突然他想知道這個(gè)表的時(shí)針和分針的夾角是多少〉孔觯現(xiàn)在xhd知道的只有時(shí)間锐朴,請(qǐng)你幫他算出這個(gè)夾角。
注:夾角的范圍[0荆姆,180]蒙幻,時(shí)針和分針的轉(zhuǎn)動(dòng)是連續(xù)而不是離散的。
Input
輸入數(shù)據(jù)的第一行是一個(gè)數(shù)據(jù)T胆筒,表示有T組數(shù)據(jù)邮破。
每組數(shù)據(jù)有三個(gè)整數(shù)h(0 <= h < 24),m(0 <= m < 60)仆救,s(0 <= s < 60)分別表示時(shí)抒和、分、秒彤蔽。
Output
對(duì)于每組輸入數(shù)據(jù)摧莽,輸出夾角的大小的整數(shù)部分。
Sample Input
2
8 3 17
5 13 30
Sample Output
138
75
這道題要求時(shí)鐘上時(shí)針和分針的夾角的大小顿痪。那么镊辕,想到用12時(shí)(或者說0時(shí))作為相對(duì)位置,求出兩根針與該處的角蚁袭,再想減求絕對(duì)值征懈,就ok了
代碼如下:
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int a;
int h,m,s;
double ans1, ans2, temp;
cin >> a;
while (a--)
{
int t = 0;
cin >> h>>m>>s;
ans1 = 1.0 * m * 6 + 0.1 * s; //以12時(shí)為相對(duì)位置,算分針在的位置揩悄。 一分鐘有6度卖哎,一秒有0.1度
ans2 = 1.0 * (h % 12) * 30 + 0.5 * m + 1.0 / 120 * s;
?/*同理,算時(shí)針的位置
注意:表上的時(shí)針只有12小時(shí)删性,所以大于12時(shí)亏娜,要求余
一小時(shí)有30度,一分鐘有0.5度蹬挺,一秒有1/120度*/
temp = fabs(ans1 - ans2); //兩個(gè)位置相減维贺,求絕對(duì)值,得到角度的大小汗侵,
if (temp > 180)? ? ? ? //所求角可能超過180度
t = (int)(360 - temp);
else
t = (int)temp;
cout << t << endl;
}
}