SRM515 Div1 Easy - RotatedClock

問題

 時計の長短針の角度を与えるので時刻として正当なものを出力せよ。

解法

 回して12通り試す。

コード

#include"bits/stdc++.h"
using namespace std;
using ll = int64_t;

class RotatedClock {
public:
    string getEarliest(int hourHand, int minuteHand) {
        for (int i = 0; i < 12; i++) {
            int h = hourHand, m = minuteHand;
            while (h < i * 30) {
                h += 30;
                m += 30;
                m %= 360;
            }
            while (h >= (i + 1) * 30) {
                h -= 30;
                m -= 30;
                m += 360;
                m %= 360;
            }

            if ((h % 30) * 360 == m * 30) {
                string ans;
                if (i < 10) {
                    ans += "0";
                }
                ans += to_string(i);
                ans += ":";
                m /= 6;
                if (m < 10) {
                    ans += "0";
                }
                ans += to_string(m);
                return ans;
            }
        }
        return "";
    }
};