#P13175. [GCJ 2017 #3] Googlements

    ID: 12997 远端评测题 5000~15000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2017递归枚举Google Code Jam

[GCJ 2017 #3] Googlements

Description

化学家研究元素周期表中的元素,而在 Code Jam,我们一直在用先进的数字粉碎机研究 googlement。googlement 是一种可以用最多九位数字表示的物质。长度为 LL 的 googlement 只能包含 00LL(包含 LL)之间的十进制数字,并且必须至少包含一个大于 00 的数字。允许前导零。例如,103103001001 是长度为 33 的合法 googlement。400400(包含了一个大于 googlement 长度 33 的数字 44)和 000000(没有任何大于 00 的数字)都不是合法的 googlement。

任何合法的 googlement 都可能在世界上随时出现,但最终会以确定性的方式衰变为另一个 googlement。具体规则如下:对于长度为 LL 的 googlement,统计其中 11 的个数(可能为 00),并写下该值,然后统计 22 的个数并写在前一个数字的右边,依此类推,直到统计并写下 LL 的个数。这样生成的新字符串就是新的 googlement,其长度同样为 LL。有时 googlement 甚至可能衰变为自身!

例如,假设 googlement 04140414 刚刚出现。它包含一个 11,零个 22,零个 33,两个 44,因此会衰变为 googlement 1002100210021002 包含一个 11,一个 22,零个 33,零个 44,因此会衰变为 11001100,接着衰变为 20002000,再衰变为 01000100,再衰变为 10001000,最后会不断地衰变为自身。

你刚刚观察到了一个 googlement GG。这个 googlement 可能是刚刚在世界上出现的,也可能是经过一次或多次衰变后的结果。请问,GG 最初在世界上出现时可能是哪几个不同的 googlement?请输出所有可能的数量。

Input Format

第一行包含测试用例的数量 TT。接下来有 TT 组测试数据,每组一行,包含一个字符串 GG,表示一个 googlement。

Output Format

对于每组测试数据,输出一行 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是观察到的 googlement 最初可能的不同 googlement 的数量。

3
20
1
123
Case #1: 4
Case #2: 1
Case #3: 1

Hint

样例解释

样例 11 中,googlement 最初可能是 2020,也可能是由 1111 衰变而来,而 1111 又可能由 12122121 衰变而来。这两者都不可能是其他 googlement 衰变的结果。所以总共有四种可能。

样例 22 中,googlement 必须最初就是 11,这是唯一可能的长度为 11 的 googlement。

样例 33 中,googlement 必须最初就是 123123,没有其他 googlement 能够衰变为它。

数据范围

  • 1T1001 \leq T \leq 100
  • GG 中每一位都是 00GG 的长度之间的十进制数字。
  • GG 至少包含一个非零数字。

小数据集(3 分,测试点 1 - 可见)

  • 时间限制:20 5 秒。
  • 1G1 \leq G 的长度 5\leq 5

大数据集(10 分,测试点 2 - 隐藏)

  • 时间限制:60 15 秒。
  • 1G1 \leq G 的长度 9\leq 9

由 ChatGPT 4.1 翻译