mayoko’s diary

プロコンとかいろいろ。

SRM 515 div1 easy:RotatedClock

SRM514の練習会にだいぶ昔に参加しました。

結果はeasyだけ通すだけでした。medは考え方がほとんど合ってたし惜しい。

解法

時計の時刻を順番に全探索して条件にあるのがあったらそれを返す。

string tost(int h, int m) {
    string ret;
    if (h < 10) ret += "0";
    ret += to_string(h);
    ret += ":";
    if (m < 10) ret += "0";
    ret += to_string(m);
    return ret;
}

class RotatedClock {
public:
    string getEarliest(int hourHand, int minuteHand) {
        for (int i = 0; i < 12; i++) {
            for (int j = 0; j < 60; j += 2) {
                int hh = 30*i+j/2;
                int mh = 6*j;
                for (int k = 0; k < 12; k++) {
                    int nhh = (hh+360-k*30) % 360;
                    int nmh = (mh+360-k*30) % 360;
                    if (nhh == hourHand && nmh == minuteHand) {
                        return tost(i, j);
                    }
                }
            }
        }
        return "";
    }
};