C++ 中时钟指针之间的角度

c++server side programmingprogramming

假设我们有两个数字,小时和分钟。我们必须找到时针和分针之间形成的较小角度(以六十进制为单位)。因此,如果输入的内容为 hour = 12 且 min := 30,则结果将为 165°。

为了解决这个问题,我们将遵循以下步骤 −

  • 如果 h = 12,则设置 h := 0

  • 如果 m = 60,则设置 m := 0

  • hAngle := 0.5 * (60h) + m

  • mAngle := 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

相关文章