สมมติว่าเรามีค่าชั่วโมงและนาทีสองค่า เราต้องหามุมที่เล็กกว่าที่เกิดขึ้นระหว่างเข็มชั่วโมงกับเข็มนาที
ดังนั้น หากอินพุตเป็นชั่วโมง =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