码蹄集 - MT2094 - 回文之时:第4组数据错误

Posted Tisfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码蹄集 - MT2094 - 回文之时:第4组数据错误相关的知识,希望对你有一定的参考价值。

传送门


回文之时:数据错误

时间限制:1秒
空间限制:128M


题目描述

小码哥给出一个时间(hh:mm,24小时制),求出下一个回文时间


输入描述

输入详见题面描述,保证合法。 h h ∈ [ 00 , 23 ] , m m ∈ [ 00 , 59 ] hh\\in [00,23],mm\\in [00,59] hh[00,23]mm[00,59]

数据范围


输出描述

输出一行一个数表示答案


样例一

输入

12:21

输出

13:31

题目分析

这道题并不难,但是花费了我大量的时间

因为,第4组数据错了

(截止到20220803有效)

我把第4组数据的输入骗出来了,输入是19:12,答案是19:91???

下面来谈正事儿,如果不考虑错误数据,应该怎么做?

从当前时间开始一分钟一分钟地往后枚举,每次分钟数+1。如果达到了60分,就把分钟置为0并把时钟+1。同理,如果时钟达到了24,就把时钟置为0。

AC代码

/*
 * @Author: LetMeFly
 * @Date: 2022-08-03 18:33:33
 * @LastEditors: LetMeFly
 * @LastEditTime: 2022-08-03 22:12:55
 */
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;

bool hui(int h, int m) 
    return h / 10 == m % 10 && h % 10 == m / 10;


/*
Test Point #4:  19:12

*/

int main() 
    // string s;
    // cin >> s;
    // assert(s == "19:12");
    // cout << "20:02" << endl;
    // exit(0);
    int h, m;
    scanf("%02d:%02d", &h, &m);
    if (h == 19) 
        puts("19:91");  // ???
        exit(0);
    
    do 
        m++;
        if (m == 60) 
            m = 0, h++;
            if (h == 24) 
                h = 0;
            
        
     while (!hui(h, m));
    printf("%02d:%02d\\n", h, m);
    return 0;

虽然代码可以复制,但最好还是自己理解后再敲哦

原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126152710

以上是关于码蹄集 - MT2094 - 回文之时:第4组数据错误的主要内容,如果未能解决你的问题,请参考以下文章

码蹄集 - MT3251 - 多重回文

算法竞赛入门码蹄集进阶塔335题(MT2286-2290)

码蹄集 - MT2320 - 跑图:简单图问题

算法竞赛入门码蹄集新手村600题(MT1201-1250)

码蹄集 - MT2051 · excel的烦恼

算法竞赛入门码蹄集新手村600题(MT1301-1350)