[题解] P10409 「QFOI R2」水落溪流浅浅

一道简单字符串。

这道题最简单的方法是使用字符串,但是由于本人不太喜欢使用字符串,所以使用了模拟的方法。

首先,你可以根据题意写出如下的代码:

// 「QFOI R2」水落溪流浅浅
// code by:cq_irritater
// time:2024/05/04
#include <bits/stdc++.h>

using namespace std;

int hh, mm;

int main()
{
    // freopen("code.in", "r", stdin);
    scanf("%d:%d", &hh, &mm);
    if (hh <= 6)
    {
        printf("%d:%d", hh + 24, mm);
    }
    else
    {
        printf("%d:0%d", hh, mm);
    }
    return 0;
}

经过提交后你会得到 \(40\) 分。然后你会发现,此程序不会输出前导零,于是你就可以得到如下的代码。

// 「QFOI R2」水落溪流浅浅
// code by:cq_irritater
// time:2024/05/04
#include <bits/stdc++.h>

using namespace std;

int hh, mm;

int main()
{
    // freopen("code.in", "r", stdin);
    scanf("%d:%d", &hh, &mm);
    if (hh <= 6)
    {
        if (mm < 10)
        {
            printf("%d:0%d", hh + 24, mm);
        }
        else
        {
            printf("%d:%d", hh + 24, mm);
        }
    }
    else
    {
        if (mm < 10)
        {
            printf("%d:0%d", hh, mm);
        }
        else
        {
            printf("%d:%d", hh, mm);
        }
    }
    return 0;
}

但是,依旧只有 \(80\) 分。这又是为什么呢?因为在 hh:mm 中的 hh 也需要考虑前导零的问题,得到下面的程序。

于是你就 AC 啦!

// 「QFOI R2」水落溪流浅浅
// code by:cq_irritater
// time:2024/05/04
#include <bits/stdc++.h>

using namespace std;

int hh, mm;

int main()
{
    // freopen("code.in", "r", stdin);
    scanf("%d:%d", &hh, &mm);
    if (hh <= 6)
    {
        if (mm < 10)
        {
            printf("%d:0%d", hh + 24, mm);
        }
        else
        {
            printf("%d:%d", hh + 24, mm);
        }
    }
    else if (hh < 10)
    {
        if (mm < 10)
        {
            printf("0%d:0%d", hh, mm);
        }
        else
        {
            printf("0%d:%d", hh, mm);
        }
    }
    else
    {
        if (mm < 10)
        {
            printf("%d:0%d", hh, mm);
        }
        else
        {
            printf("%d:%d", hh, mm);
        }
    }
    return 0;
}
posted @ 2024-05-17 23:02  cq_irritater  阅读(64)  评论(0)    收藏  举报