#P14104. [ZJCPC 2017] Seven Segment Display
[ZJCPC 2017] Seven Segment Display
Description
七段数码管(Seven segment display),又称七段指示器,是一种用于显示十进制数字的电子显示设备,是比点阵显示更为简单的选择。七段数码管被广泛用于数字时钟、电子测量仪表、基础计算器及其他需要显示数字信息的电子设备中。
Edward 是 Marjar 大学的一名学生,本学期正在学习“逻辑与计算机设计基础”课程。他购买了一个八位的七段数码管元件,用于他的课程项目——制作一个十六进制计数器。
要在七段数码管上显示一个十六进制数字,需要消耗一定的电能。显示一个十六进制数所需的总能量,是其各位数字需要消耗的能量之和。Edward 在网上查到如下能耗表,用以描述每种数字的能量消耗:
$$\begin{array}{|c|c|c|c|} \hline \text{数字} & \text{能量消耗} & \text{数字} & \text{能量消耗} \\ & \text{(单位/s)} & & \text{(单位/s)} \\ \hline 0 & 6 & 8 & 7 \\ \hline 1 & 2 & 9 & 6 \\ \hline 2 & 5 & A & 6 \\ \hline 3 & 5 & B & 5 \\ \hline 4 & 4 & C & 4 \\ \hline 5 & 5 & D & 5 \\ \hline 6 & 6 & E & 5 \\ \hline 7 & 3 & F & 4 \\ \hline \end{array}$$:::align{center}
:::
例如,要在七段数码管上显示十六进制数“5A8BEF67”一秒钟,需要消耗 单位的能量。
Edward 的十六进制计数器的工作方式如下:
- 计数器仅工作 秒, 秒结束后停止显示。
- 第 秒开始,计数器显示预先设定的 8 位十六进制数 。
- 在第 秒结束时(),显示的数字自增 。如果自增后超过十六进制最大值“FFFFFFFF”,则重新置为 继续显示。
现在给定 和 ,Edward 想知道八位七段数码管在这期间总共消耗了多少能量。你能帮他解决这个问题吗?
Input Format
有多组测试数据。输入的第一行为整数 (),表示测试用例的数目。对于每个测试用例:
本例的唯一一行包含整数 ()和一个大写的八位十六进制数 (),含义如上所述。
温馨提示:本题数据输入输出量较大,推荐使用更快的输入输出方式。例如在 C++ 中建议使用 scanf/printf 替代 cin/cout。
Output Format
对于每组测试用例,输出一个整数,表示八位七段数码管模块的总能量消耗。
3
5 89ABCDEF
3 FFFFFFFF
7 00000000
208
124
327
Hint
对于第一个样例,计数器将依次显示 个十六进制数(89ABCDEF, 89ABCDF0, 89ABCDF1, 89ABCDF2, 89ABCDF3),共 秒。能量消耗为:
$$\begin{matrix} (7 + 6 + 6 + 5 + 4 + 5 + 4 + 6) & + \\ (7 + 6 + 6 + 5 + 4 + 5 + 4 + 2) & + \\ (7 + 6 + 6 + 5 + 4 + 5 + 4 + 5) & + \\ (7 + 6 + 6 + 5 + 4 + 5 + 4 + 5) & = & 208 \end{matrix}$$对于第二个样例,计数器将依次显示 个十六进制数(FFFFFFFF, 00000000, 00000001),共 秒。能量消耗为:
$$\begin{matrix} (4 + 4 + 4 + 4 + 4 + 4 + 4 + 4) & + \\ (6 + 6 + 6 + 6 + 6 + 6 + 6 + 6) & + \\ (6 + 6 + 6 + 6 + 6 + 6 + 6 + 2) & = & 124 \end{matrix}$$由 ChatGPT 5 翻译
京公网安备 11011102002149号