P14674 [ICPC 2025 Seoul R] Fair Problemset
题目描述
本题采纳与 M 题 "Triple Fairness" 完全相同的 **公平试题集** 定义。
ICPC 是一项团队竞赛。每个团队有三名成员。在比赛开始时,大多数团队会将 $3n$ 道题平均分配。他们通常使用以下两种常见方法来分配题目:
1. **顺序分配**:每位成员从 $3n$ 道题中取一个连续的 $n$ 道题块。具体来说,第一名成员取题目 $1, \cdots, n$,第二名成员取题目 $n+1, \cdots, 2n$,第三名成员取题目 $2n+1, \cdots, 3n$。
2. **跳跃分配**:每位成员从 $3n$ 道题中取索引除以 $3$ 余数相同的题目。具体来说,第一名成员取题目 $1, 4, 7, \cdots, 3n-2$,第二名成员取题目 $2, 5, 8, \cdots, 3n-1$,第三名成员取题目 $3, 6, 9, \cdots, 3n$。
ICPC 首尔赛区科学委员会需要准备一个由 $3n$ 道题组成的试题集。每道题的难度用一个从 $1$ 到 $n$(含)的整数表示。对于每种难度,恰好有三道题具有该难度。因此,试题集中的难度排列可以看作一个长度为 $3n$ 的难度序列,其中包含每种 $n$ 个难度级别的三道题。
为了防止任何团队因选择的问题分配方法而获得优势或处于劣势,ICPC 首尔赛区科学委员会定义了一个称为 **公平试题集** 的标准。一个长度为 $3n$ 的难度序列被称为公平试题集,当且仅当它同时满足以下两个条件:
1. **顺序分配公平性**:当使用顺序分配时,对于每个难度级别 $i$ ($1 \le i \le n$),三名成员每人恰好收到一道难度为 $i$ 的题。
2. **跳跃分配公平性**:当使用跳跃分配时,对于每个难度级别 $i$ ($1 \le i \le n$),三名成员每人恰好收到一道难度为 $i$ 的题。
换句话说,无论选择两种方法中的哪一种,每个团队成员都必须被分配到恰好一道难度为 $1$ 到 $n$(含)中每个级别的题目。
给定一个正整数 $k$,请编写一个程序,对每个 $n = 1, 2, \cdots, k$,找出长度为 $3n$ 的公平试题集序列的数量。
输入格式
你的程序需要从标准输入读取数据。输入恰好包含一行。该行包含两个整数 $k$ 和 $m$ ($1 \le k \le 10^6$; $10^8 < m < 10^9$; $m$ 是一个质数)。
输出格式
你的程序需要向标准输出写入数据。你应该恰好输出 $k$ 行。在第 $n$ 行 ($1 \le n \le k$) 上,输出长度为 $3n$ 的公平试题集序列的数量,结果对 $m$ 取模。
说明/提示
以下是长度为 $9$ ($= 3 \times 3$) 的 $12$ 个公平试题集序列:
```
i. 1 2 3 2 3 1 3 1 2
ii. 1 2 3 3 1 2 2 3 1
iii. 1 3 2 2 1 3 3 2 1
iv. 1 3 2 3 2 1 2 1 3
v. 2 1 3 1 3 2 3 2 1
vi. 2 1 3 3 2 1 1 3 2
vii. 2 3 1 1 2 3 3 1 2
viii. 2 3 1 3 1 2 1 2 3
ix. 3 1 2 1 2 3 2 3 1
x. 3 1 2 2 3 1 1 2 3
xi. 3 2 1 1 3 2 2 1 3
xii. 3 2 1 2 1 3 1 3 2
```
翻译由 DeepSeek V3 完成