#G2008. 数字时钟

    ID: 1043 传统题 1000ms 512MiB 尝试: 7 已通过: 4 难度: 入门 上传者: 标签>GESP二级多重循环格式化输出2026模拟

数字时钟

题目描述

教室里有一块电子钟,按 hh:mm:ss 的格式显示时间(2424 小时制,不足两位的前面补 00),从 00:00:00 一直走到 23:59:59。

小 D 发现,把屏幕上的 66 个数字加起来,可以得到一个「数字和」。例如 10:00:02 的数字和是 1+0+0+0+0+2=31 + 0 + 0 + 0 + 0 + 2 = 3。

给出同一天里的两个时刻 t1t_1 和 t2t_2(t1t_1 不晚于 t2t_2),以及一个整数 kk。请你回答:从 t1t_1 到 t2t_2(两端都算)的每一秒里,有多少个时刻的数字和恰好等于 kk?其中最早的一个是什么时刻?

输入格式

第一行是时刻 t1t_1,第二行是时刻 t2t_2,格式都是 hh:mm:ss。

第三行一个整数 kk。

输出格式

第一行一个整数,表示数字和等于 kk 的时刻个数。

第二行输出其中最早的那个时刻,格式为 hh:mm:ss;如果一个这样的时刻都没有,输出 -1。

样例 #1

样例输入 #1

09:59:50
10:00:20
3

样例输出 #1

3
10:00:02

样例解释

从 09:59:50 到 10:00:20 共 3131 个时刻。数字和等于 33 的有 10:00:02、10:00:11、10:00:20 三个,最早的是 10:00:02。注意 10:00:20 恰好是 t2t_2,也要算进去。

样例 #2

样例输入 #2

00:00:00
23:59:59
39

样例输出 #2

0
-1

样例解释

一天中数字和最大的时刻是 19:59:59,数字和为 3838,所以没有数字和等于 3939 的时刻。

提示

数据范围

  • 对于 40%40\% 的数据:t1t_1 为 00:00:00,t2t_2 为 23:59:59;
  • 对于 100%100\% 的数据:t1t_1、t2t_2 都是合法时刻且 t1t_1 不晚于 t2t_2,0≤k≤540 \le k \le 54。

提示

  • 读入 09:59:50 这样的时刻,可以用 int 读数字、用 char 变量「吃掉」中间的冒号:cin >> h >> c >> m >> c >> s;,也可以用 scanf("%d:%d:%d", &h, &m, &s);。
  • 判断某个时刻是否在 t1t_1 与 t2t_2 之间,可以把时刻换算成「从 00:00:00 起过了多少秒」再比较。
  • 输出时不足两位要补 00,可以用 printf("%02d", x);。