时间 \operatorname{时间} 时间
题目链接: nowcoder 212956 \operatorname{nowcoder\ 212956} nowcoder 212956
关于这场比赛
到牛客看:
题目
众所周知,NOIP 及其模拟赛的比赛时长均为 3 3 3 小时 30 30 30 分钟。
Alice 和 Bob 参加了于 h h h 时 m m m 分开始的2020牛客NOIP赛前集训营-提高组,请你告诉他们比赛结束的时间。
输入
共一行:一个形如 hh:mm 的字符串,表示比赛开始的时间。位数不足将填补 0 0 0。
输出
共一行:一个形如 hh:mm 的字符串,表示比赛结束的时间。位数不足请填补 0 0 0。
样例输入1
00:00
样例输出1
03:30
样例输入2
00:30
样例输出2
04:00
样例输入3
20:30
样例输出3
00:00
数据范围
存在独立的
30
%
30\%
30% 的测试点,满足
h
<
20
,
m
<
30
h<20,m<30
h<20,m<30。
存在独立的
30
%
30\%
30% 的测试点,满足
h
<
20
h<20
h<20。
存在独立的
30
%
30\%
30% 的测试点,满足
m
<
30
m<30
m<30。
对于全部的数据,满足
0
≤
h
<
24
,
0
≤
m
<
60
0\leq h<24, 0\leq m<60
0≤h<24,0≤m<60。
注:独立指测试点集合互不相交。
思路
这道题就是一道模拟。
我们就先不管进位,加了时间,然后在处理分钟数的进位和小时数的进位。
注意要补
0
0
0。
注意如果分钟数加了是
60
60
60 或者小时数加了是
24
24
24,就要进位变成
0
0
0。
比赛时
看到是模拟,就打出来了。
代码
#include<cstdio>
using namespace std;
int a, b;
char c;
int main() {
c = getchar();
a = c - '0';
c = getchar();
a = a * 10 + c - '0';
c = getchar();
c = getchar();
b = c - '0';
c = getchar();
b = b * 10 + c - '0';
a += 3;
b += 30;
if (b > 59) {
a++;
b -= 60;
}
if (a > 23) {
a -= 24;
}
if (a < 10) printf("0");
printf("%d:", a);
if (b < 10) printf("0");
printf("%d", b);
return 0;
}