Giả sử có hai số hour và minutes. Tìm góc nhỏ hơn (đơn vị độ) giữa kim giờ và kim phút. Ví dụ: hour = 12, min = 30 → 165°.
Để giải quyết, chúng ta làm theo các bước:
Nếu h = 12 thì h = 0.
Nếu m = 60 thì m = 0.
hAngle = 0.5 * (60*h + m).
mAngle = 6 * m.
ret = |hAngle - mAngle|.
Trả về min(ret, 360 - ret).
Ví dụ (C++)
Hãy xem 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);
}
};
int main(){
Solution ob;
cout << (ob.angleClock(12, 30));
}
Đầu vào
12 30
Đầu ra
165.00000