Giả sử chúng ta có hai số, giờ và phút. Chúng ta phải tìm một góc nhỏ hơn (tính theo đơn vị giới tính) được hình thành giữa kim giờ và kim phút. Vì vậy, nếu đầu vào là giờ =12 và min:=30, thì kết quả sẽ là 165 °.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nếu h =12 thì đặt h:=0
-
nếu m =60 thì đặt m:=0
-
hAngle:=0,5 * (60 giờ) + m
-
mAngle:=6m
-
ret:=| hAngle - mAngle |
-
trả về tối thiểu ret và (360 - ret)
Ví dụ (C ++)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <bits/stdc++.h> using namespace std; class Solution { public: double angleClock(int h, int m) { if(h == 12) h = 0; if(m == 60) m = 0; double hAngle = 0.5*((60 * h) + m); double mAngle = 6 * m; double ret = abs(hAngle - mAngle); return min(360 - ret, ret); } }; main(){ Solution ob; cout << (ob.angleClock(12, 30)); }
Đầu vào
12 30
Đầu ra
165.00000