题解 CF622B 【The Time】
这个题目最难的点不是24进制时间,而是前导0
通过观察样例,我们发现,如果时或者分为0,输出“00”,如果时或者分为个位数,输出“0”时分,这个看似好处理,但如果用if占了整个程序一大半啊!
先来看看如何做24进制时间,其实比较简单的
for(int i = 1; i <= n; i++)
{
b++;
if(b >= 60)
{
b = 0;
a++;
}
if(a >= 24)
{
a = 0;
}
}
就这样就ok了,但是全代码很长啊,100多行
#include <cstdio>
int main()
{
int a, b, n, cnt = 0;
scanf("%d:%d", &a, &b);
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
b++;
if(b >= 60)
{
b = 0;
a++;
}
if(a >= 24)
{
a = 0;
}
}
if(a == 0)
{
printf("00:");
if(b == 0)
{
printf("00\n");
}
else if(b >= 1 && b <= 9)
{
printf("0%d\n", b);
}
else
{
printf("%d\n", b);
}
}
else if(a >= 1 && a <= 9)
{
printf("0%d:", a);
if(b == 0)
{
printf("00\n");
}
else if(b >= 1 && b <= 9)
{
printf("0%d\n", b);
}
else
{
printf("%d\n", b);
}
}
else if(b == 0)
{
if(a == 0)
{
printf("00");
}
else if(a >= 1 && a <= 9)
{
printf("0%d", a);
}
else
{
printf("%d:", a);
}
printf("00\n");
}
else if(b >= 1 && b <= 9)
{
if(a == 0)
{
printf("00\n");
}
else if(a >= 1 && a <= 9)
{
printf("0%d\n", a);
}
else
{
printf("%d:", a);
}
printf("0%d\n", b);
}
else
{
printf("%d:%d\n", a, b);
}
return 0;
}
这里说一下为什么不用cin,首先,如果用cin只能用char或者string,观察一下我的scanf,%d和%d之间可以放“:”,不用char或者string啦

浙公网安备 33010602011771号