题解 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啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现