#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”一秒钟,需要消耗 5+6+7+5+5+4+6+3=415 + 6 + 7 + 5 + 5 + 4 + 6 + 3 = 41 单位的能量。

Edward 的十六进制计数器的工作方式如下:

  • 计数器仅工作 nn 秒,nn 秒结束后停止显示。
  • 11 秒开始,计数器显示预先设定的 8 位十六进制数 mm
  • 在第 ii 秒结束时(1i<n1 \le i < n),显示的数字自增 11。如果自增后超过十六进制最大值“FFFFFFFF”,则重新置为 00 继续显示。

现在给定 nnmm,Edward 想知道八位七段数码管在这期间总共消耗了多少能量。你能帮他解决这个问题吗?

Input Format

有多组测试数据。输入的第一行为整数 TT1T1051 \le T \le 10^5),表示测试用例的数目。对于每个测试用例:

本例的唯一一行包含整数 nn1n1091 \le n \le 10^9)和一个大写的八位十六进制数 mm00000000mFFFFFFFF00000000 \le m \le \text{FFFFFFFF}),含义如上所述。

温馨提示:本题数据输入输出量较大,推荐使用更快的输入输出方式。例如在 C++ 中建议使用 scanf/printf 替代 cin/cout。

Output Format

对于每组测试用例,输出一个整数,表示八位七段数码管模块的总能量消耗。

3
5 89ABCDEF
3 FFFFFFFF
7 00000000
208
124
327

Hint

对于第一个样例,计数器将依次显示 55 个十六进制数(89ABCDEF, 89ABCDF0, 89ABCDF1, 89ABCDF2, 89ABCDF3),共 55 秒。能量消耗为:

$$\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}$$

对于第二个样例,计数器将依次显示 33 个十六进制数(FFFFFFFF, 00000000, 00000001),共 33 秒。能量消耗为:

$$\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 翻译