P16479 [GKS 2014 #A] Seven-segment Display

题目描述

Tom 是一个梦想成为科学家的男孩,他在业余时间搞了很多发明。几天前他想到一个绝妙的主意:自己动手做一个秒表!于是他立刻买了一个七段数码管。 数码管的七个段都是发光二极管(LED),通过不同的组合点亮可以表示阿拉伯数字,如下图所示: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/0jtwp9nl.png) ::: 然而,就在他写完程序、尝试测试秒表的时候,却发现一些 LED 居然坏掉了!有些段永远无法点亮,而其他的工作正常。于是,这块数码管一直显示着模棱两可的状态…… Tom 把数码管产生的一段连续状态记录了下来,想知道能否理解这块数码管到底在做什么。他认为第一步是确定数码管**接下来**会显示什么状态,你能帮帮他吗? 请注意,尽管有些段损坏,数码管仍正常工作,这意味着它会从某个数字开始(可以是 $0$–$9$ 中的任意一个,因为我们不知道记录是从哪里开始的)**循环**递减。这里的“循环”是指,每次数码管递减到 $0$ 后,会继续从 $9$ 开始递减。 为方便起见,我们用下图中的字母 A 到 G 来指代数码管的七个段: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/lcdkout4.png) ::: 例如,如果记录的状态如下: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/u7s0w0hl.png) ::: 不难推断出,**只有**段 B 是损坏的,而数码管试图产生的状态序列就是简单的“$9 \rightarrow 8 \rightarrow 7 \rightarrow 6 \rightarrow 5$”。那么接下来的数字应该是 $4$,但考虑到段 B 损坏,下一个状态应为: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/ycrnsc16.png) :::

输入格式

输入的第一行给出测试用例的数量 $\mathbf{T}$。每个测试用例占一行,包含一个整数 $\mathbf{N}$,表示 Tom 记录的状态数量,随后是 $\mathbf{N}$ 个由空格分隔的状态。每个状态被编码为一个由 $7$ 个字符组成的字符串,按从左到右的顺序表示段 A 至段 G 的亮灭情况。字符串中的字符只能是 `1` 或 `0`,分别表示对应的段点亮或熄灭。

输出格式

对于每个测试用例,输出一行形如 `Case #x: y` 的内容,其中 $x$ 是测试用例编号(从 $1$ 开始)。如果输入能够唯一确定数码管的下一个状态,则 $y$ 应该是以相同格式表示的该下一个状态。否则,$y$ 应为 `ERROR!`。

说明/提示

### 限制 $1 \leq T \leq 2000.$ **小数据集(测试集 1 - 可见)** $1 \leq \mathbf{N} \leq 5.$ **大数据集(测试集 2 - 隐藏)** $1 \leq \mathbf{N} \leq 100.$ 翻译由 DeepSeek V4 Pro 完成