#P13406. [GCJ 2010 #3] Different Sum
[GCJ 2010 #3] Different Sum
Description
我们为 Google Code Jam 2010 设计了一个很棒的问题,涉及选手们解决一个“字谜算式”(cryptarithm)。但我们需要你帮助生成该问题的测试用例;更准确地说,我们关心的是那些足够“好”(具体定义见下文)以便转换为字谜算式的加法等式。
你不需要了解什么是字谜算式来解决本题,因为我们会提供所有必要的定义。我们将字谜算式定义为如下格式的加法等式:所有被加数(加数)和结果(和)都右对齐,如下所示:
124
31
25
---
180
此外,对于字谜算式的每一列,所有加数在该列上的数字都必须互不相同。注意,这个约束不包括结果(和)。例如,上述等式的第一列只有数字 ,第二列有数字 和 ,第三列有数字 和 。这个等式不是一个字谜算式,因为第二列出现了两个 。但如果我们将最后一个加数替换为 (和替换为 ),那么它就是一个字谜算式。
注意,字谜算式中的加数都为正数,且不允许有前导零。加数的顺序不重要(换句话说,仅加数顺序不同的两个等式被视为相同的等式)。
上面的例子是在 进制下的,但我们也对其他进制下的字谜算式感兴趣。注意,在 进制下,“数字”可以是 到 之间的任意整数。下面是一个 进制下的字谜算式:
I7B
JJJ
----
1F47
在这个例子中,"I" 代表数字 ,"B" 代表数字 ,"J" 代表数字 ,"F" 代表数字 。用十进制表示,这两个加数分别为 和 ,和为 $1\times 23^3 + 15\times 23^2 + 4\times 23 + 7 = 20201$。请注意,用字母表示 及以上的数字只是为了例子更清晰;在本题中如何表示这些数字并不重要。
给定和 以及进制 ,有多少个不同的字谜算式?
由于答案可能非常大,请输出对 取模的结果。
Input Format
输入的第一行是测试用例数 。接下来的 行,每行包含两个正整数 和 。所有输入数字均为十进制。
Output Format
对于每个测试用例,输出一行,格式为 "Case #: ",其中 是测试用例编号(从 开始), 是满足条件的字谜算式数量。由于答案可能很大,请输出对 取模的结果。输出本身应为十进制。
2
6 10
8 4
Case #1: 4
Case #2: 4
Hint
样例解释
以下是和为 的 个字谜算式:
6 1 2 1
- 5 4 2
6 - - 3
6 6 -
6
以下是在 进制下和为 的 个字谜算式:
20 11 13 10
-- 3 1 3
20 -- -- 1
20 20 --
20
数据范围
- 。
小数据范围(7 分,测试点 1 - 可见)
- 时间限制:
303 秒。 - 。
- 。
大数据范围(22 分,测试点 2 - 隐藏)
- 时间限制:
12020 秒。 - 。
- 。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号