ABC278B 题解

· · 题解

整合题解。

B 题,模拟题,难度较低。

思路

我们发现,所谓的交换位置,就是:交换 h 的个位与 m 的十位。

所以直接模拟就行。而 24 小时制,就是指:满足 0 \le h < 24, 0 \le m < 60

那么我们就可以判断这个时刻是否合法了。

然后一直枚举就行。由于判断的过程是 O(1) 的,并且没有多少种时刻,所以很快就能跑完。

代码

省去了大段的缺省源。

bool chk(int h, int m) //判断这个时刻是否合法
{
    int th = h, tm = m;
    m = 10 * (th % 10) + (tm % 10), h = 10 * (th / 10) + (tm / 10);
    return (0 <= h && h < 24 && 0 <= m && m < 60);
}
void solve()
{
    int h, m;
    scanf("%d%d", &h, &m);
    while (true) //暴力枚举
    {
        if (chk(h, m)) printf("%d %d\n", h, m), exit(0);
        if (h == 23 && m == 59) h = m = 0;
        else if (m == 59) h++, m = 0;
        else m++;
    }
}