สมมติว่าเรามีค่าชั่วโมงและนาทีสองค่า เราต้องหามุมที่เล็กกว่าที่เกิดขึ้นระหว่างเข็มชั่วโมงกับเข็มนาที
ดังนั้น หากอินพุตเป็นชั่วโมง =12 นาที =45 เอาต์พุตจะเป็น 112.5

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
-
ถ้า h =12 ให้ตั้งค่า h :=0
-
ถ้า m =60 ให้ตั้งค่า m :=0
-
มุมองศา :=0.5 * (60 ชม.) + ม.
-
มุมมุม :=6m
-
ret :=|hAngle - mAngle|
return ค่าต่ำสุดของ ret และ (360 – ret) ให้เรามาดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
double solve(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.solve(12, 45));
} อินพุต
12, 45
ผลลัพธ์
112.5