假设我们有一个θ或角度值。我们必须找到一种hh:mm格式的时间,该时间由时针和分针创建角度。假设角度为90°,则结果可以为3:00。
由于有12个小时,因此有12个小时的可能性和60分钟的可能性。我们将遍历所有可能的时间。如果任何时间的角度与给定的角度相同,则打印该时间。
#include<iostream> #include<cmath> using namespace std; float angleFromClockHand(int hour, int minute) { float hour_angle = 0.5 * (hour*60 + minute); float minute_angle = 6*minute; float angle = abs(hour_angle - minute_angle); angle = min(360-angle, angle); return angle; } void findTime(float theta) { for (int hour=0; hour<12; hour++) { for (int min=0; min<60; min++) { if (angleFromClockHand(hour, min)==theta) { cout << hour << ":"<< min; return; } } } cout << "Unable to find time"; } int main() { float angle = 45.0; findTime(angle); }
输出结果
4:30