一道简单字符串。
这道题最简单的方法是使用字符串,但是由于本人不太喜欢使用字符串,所以使用了模拟的方法。
首先,你可以根据题意写出如下的代码:
// 「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;
}
标签:code,R2,mm,int,hh,P10409,QFOI
From: https://www.cnblogs.com/cq-irritater/p/18198861/solution-luogu-p10409