#P16479. [GKS 2014 #A] Seven-segment Display

[GKS 2014 #A] Seven-segment Display

题目描述

Tom 是一个梦想成为科学家的男孩,他在业余时间搞了很多发明。几天前他想到一个绝妙的主意:自己动手做一个秒表!于是他立刻买了一个七段数码管。

数码管的七个段都是发光二极管(LED),通过不同的组合点亮可以表示阿拉伯数字,如下图所示:

:::align{center} :::

然而,就在他写完程序、尝试测试秒表的时候,却发现一些 LED 居然坏掉了!有些段永远无法点亮,而其他的工作正常。于是,这块数码管一直显示着模棱两可的状态……

Tom 把数码管产生的一段连续状态记录了下来,想知道能否理解这块数码管到底在做什么。他认为第一步是确定数码管接下来会显示什么状态,你能帮帮他吗?

请注意,尽管有些段损坏,数码管仍正常工作,这意味着它会从某个数字开始(可以是 0099 中的任意一个,因为我们不知道记录是从哪里开始的)循环递减。这里的“循环”是指,每次数码管递减到 00 后,会继续从 99 开始递减。

为方便起见,我们用下图中的字母 A 到 G 来指代数码管的七个段:

:::align{center} :::

例如,如果记录的状态如下:

:::align{center} :::

不难推断出,只有段 B 是损坏的,而数码管试图产生的状态序列就是简单的“$9 \rightarrow 8 \rightarrow 7 \rightarrow 6 \rightarrow 5$”。那么接下来的数字应该是 44,但考虑到段 B 损坏,下一个状态应为:

:::align{center} :::

输入格式

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

输出格式

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

4
1 1111111
2 0000000 0001010
3 0100000 0000111 0000011
5 1011011 1011111 1010000
1011111 1011011
Case #1: 1110000
Case #2: ERROR!
Case #3: 0100011
Case #4: 0010011

提示

限制

1T2000.1 \leq T \leq 2000.

小数据集(测试集 1 - 可见)

1N5.1 \leq \mathbf{N} \leq 5.

大数据集(测试集 2 - 隐藏)

1N100.1 \leq \mathbf{N} \leq 100.

翻译由 DeepSeek V4 Pro 完成