#P13464. [GCJ 2008 #1C] Ugly Numbers

    ID: 13275 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>动态规划 DP数学2008数论Google Code Jam

[GCJ 2008 #1C] Ugly Numbers

Description

从前在一个奇特的世界里,人们称一个数为“丑数”,如果它能被任意一个一位质数(22335577)整除。因此,1414 是丑数,但 1313 不是。3939 是丑数,但 121121 不是。注意,00 也是丑数。同时,负数也可以是丑数,比如 14-1439-39

有一天,你闲来无事,盯着一串数字,比如:

123456123456

你很好奇,如果允许你在数字之间插入加号或减号,会有多少种可能的表达式。例如,你可以得到:

1+2345+6=2361 + 234 - 5 + 6 = 236

这是一个丑数。或者

123+456=71123 + 4 - 56 = 71

这不是丑数。

计算你可以操作的方式很简单:在每两个相邻数字之间,你可以选择插入加号、减号或什么都不插。因此,如果你有 DD 位数字,总共可以构造 3D13^{D-1} 个表达式。

注意,数字可以有前导零。如果字符串是 "01023",那么 "01023"、"0+1-02+3" 和 "01-023" 都是合法表达式。

你的任务很简单:在这 3D13^{D-1} 个表达式中,统计有多少个表达式的结果是丑数。

Input Format

输入的第一行包含一个整数 NN,表示测试用例的数量。每个测试用例为一行,包含一个非空的十进制数字字符串。

Output Format

对于每个测试用例,输出一行:

Case #X: Y

其中 XX 是测试用例编号(从 11 开始),YY 是表达式结果为丑数的表达式个数。

4
1
9
011
12345
Case #1: 0
Case #2: 1
Case #3: 6
Case #4: 64

Hint

限制条件

  • 0N1000 \leq N \leq 100
  • 每个测试用例的字符串非空,仅包含字符 '0' 到 '9'。

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

  • 每个字符串长度不超过 1313

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

  • 每个字符串长度不超过 4040

由 ChatGPT 4.1 翻译