hihocoder-1562-Hi的鐘表
阿新 • • 發佈:2017-08-27
main panel -h 6.0 tdi using scan tps class
hihocoder-1562-Hi的鐘表
1562 : ?Hi的鐘表
時間限制:10000ms 單點時限:1000ms 內存限制:256MB描述
?Hi喜歡各種?度。?天,他註意到了鐘表上的?度,於是他想考考他的好朋友?Ho:對於?個24?時制的時刻,在 t 秒之後,對應在鐘表上時針與分針的夾?是多少。為保證答案的唯?性,只需考慮不超過180°的?。你能幫助?Ho解決這個問題嗎?
例如,下圖可表?15點30分0秒經過0秒後的時間,其對應的夾?為75°和285°,在這個問題中我們只考慮不超過180°的?,所以此時的夾?為75°。
輸入
輸?包含多組測試數據。
第??為測試數據的組數T(1 ≤ T ≤ 1000)
對於每組數據:
第??包含三個整數h,m,s,表?給定時刻的時、分、秒(0 ≤ h ≤ 23,0 ≤ m ≤ 59,0 ≤ s ≤ 59)
第??包含?個整數t,表?經過的秒數(0 ≤ t ≤ 1000000000)
輸出
對於每組數據,輸出時針與分針的夾角。四舍五?保留?數點後四位。
- 樣例輸入
-
3 15 30 0 0 14 30 0 3600 15 30 0 3600
- 樣例輸出
-
75.0000 75.0000 45.0000
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> using namespace std; double ComputeAngle(int h, int m, int s){ double m_angle = m * 360.0 / 60.0 + (s/60.0)*6.0; while(m_angle > 360.0){ m_angle -= 360.0; } double h_angle = h * 360.0 / 12.0 + (m_angle / 360.0)*30.0; while(h_angle > 360.0){ h_angle -= 360.0; } double ans = max(m_angle, h_angle) - min(m_angle, h_angle); ans = min(360.0 - ans, ans); return ans; } int main(){ int T, t, s, h, m; double ans; scanf("%d", &T); while(T--){ scanf("%d %d %d", &h, &m, &s); scanf("%d", &t); h += t / 3600; h %= 12; t = t % 3600; m += t / 60; if(m >= 60){ m %= 60; h = (h + 1)% 12; } t = t%60; s += t; if(s >= 60){ s %= 60; m = m + 1; if(m >= 60){ m %= 60; h = (h + 1)%12; } } ans = ComputeAngle(h, m, s); printf("%.4lf\n", ans ); } return 0; }
hihocoder-1562-Hi的鐘表