题解:B4191 [海淀区小学组 2023] 回文时间

· · 题解

题目简述

求给定的以二十四小时计时法的时间的不含此时间的下一个回文时间。

主要思路

由于一天只有 60 \times 24 = 1440 分钟,所以可以直接枚举时间。注意读入的时候有 : 可以用 scanf("%d:%d", &h, &m),输出的时候不够 2 位要添 0,可以用 printf("%.02d:%.02d", h, m)

AC Code

#include<iostream>
#include<algorithm>
using namespace std;

typedef long long ll;

int main() {
    int h, m;
    scanf("%d:%d", &h, &m);
    // ----------------------------
    do {
        m++;
        // 判断进位
        if (m >= 60) {
            h++;
            m = 0;
        }
        if (h >= 24) h = 0;
    }
    while (!(h % 10 == m / 10 && h / 10 == m % 10));  // 由于每个时间只有 4 位,此处的判断条件就是小时的个位等于分钟的十位,并且小时的十位等于分钟的个位
    // ----------------------------
    printf("%.02d:%.02d", h, m);
    return 0;
}