สมมติว่าเรามีตัวเลขสองตัว ชั่วโมงและนาที เราต้องหามุมที่เล็กกว่า (ในหน่วยความเท่าเทียม) ที่เกิดขึ้นระหว่างเข็มชั่วโมงกับเข็มนาที ดังนั้นหากอินพุตเป็น hour =12 และ min :=30 ผลลัพธ์จะเป็น 165°
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า h =12 ให้ตั้งค่า h :=0
-
ถ้า m =60 ให้ตั้งค่า m :=0
-
มุมองศา :=0.5 * (60 ชม.) + ม.
-
มุมมุม :=6m
-
ret :=|hAngle - mAngle|
-
ผลตอบแทนขั้นต่ำของ ret และ (360 – ret)
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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)); }
อินพุต
12 30
ผลลัพธ์
165.00000