知论派的谜题(puzzle)
给定 个长度均为 的正整数 。
一次列重排指选择一个 到 的排列 ,并同时将每一个数的第 位放到重排后第 位。也就是说,移动的是所有数的同一列,不能单独打乱某一个数。
形式化地,重排后第 个数为 。
请你求有多少个排列 ,使得重排后的 个数满足 ,并且所有 都没有前导零。
答案对 取模。
如果两列上的数字完全相同,但它们来自原来的不同位置,则交换这两列仍然视为不同的列重排。
样例 1 输入
3
3
12
23
35
3
10
20
30
3
111
222
333
样例 1 输出
2
1
6
样例 1 解释
对于第 组测试数据,两种合法列重排分别得到 和 。
对于第 组测试数据,若交换两列会得到 ,出现前导零,因此不合法;只有原顺序合法。
对于第 组测试数据,三列完全相同,但列的位置互不相同,因此 种列重排都要计入答案。
样例 2 输入
2
3
1
1
3
4
12
23
34
69
样例 2 输出
0
2
样例 2 解释
对于第 组测试数据,只有一列,且 ,因此答案为 。
对于第 组测试数据,两种合法列重排分别得到 和 。
样例 3
见附加文件中的 puzzle3.in 和 puzzle3.ans。
该样例满足测试点 的限制。
样例 4
见附加文件中的 puzzle4.in 和 puzzle4.ans。
该样例满足测试点 的限制。
样例 5
见附加文件中的 puzzle5.in 和 puzzle5.ans。
该样例满足测试点 的限制。
输入格式
本题有多组测试数据。
第一行包含一个整数 ,表示测试数据组数。
对于每组测试数据:
- 第一行包含一个整数 ;
- 接下来 行,每行包含一个长度相同的正整数,依次表示 。
输出格式
对于每组测试数据,输出一行一个整数,表示合法列重排数量对 取模后的结果。
提示
对于所有测试数据,保证:
- ;
- ;
- ;
- 输入中的所有整数均没有前导零。
| 测试点编号 | 特殊性质 |
|---|---|
| A | |
| B | |
| C | |
| D | |
| 无 |
- 特殊性质 A:保证每组测试数据中 。
- 特殊性质 B:保证 。
- 特殊性质 C:如果允许重排后的整数出现前导零,则至少存在一种列重排满足加法等式。
- 特殊性质 D:保证每一列都可以作为某种进位状态下的合法竖式加法列。
下发大样例
- puzzle1⬇ 输入 (38B)⬇ 输出 (6B)
- puzzle2⬇ 输入 (24B)⬇ 输出 (4B)
- puzzle3⬇ 输入 (1.7KB)⬇ 输出 (120B)