P17263 [ICPC 2017 Urumqi R] Friends

题目描述

有些人从庞大而多样的朋友圈中受益,另一些人则偏爱较小的朋友和熟人圈子。函数又何尝不是如此。 考虑若干个由参数 $p$ 和 $\mu$ ($0 \le \mu < p$) 定义的函数,记为 $$f_0, f_1, \dots, f_{p-1}.$$ 其中 $p$ 是一个质数,$\mu$ 是一个整数。 函数 $f_i$ 在整数 $x \in \{0, 1, \dots, p-1\}$ 处的值定义为 $$f_i(x) = ((x^{i + 1} \bmod p) + (\mu^{i + 1} \bmod p)) \bmod 7.$$ 我们称 $\{0, 1, \dots, p - 1\}$ 的一个子集 $S$ 为一个 **朋友圈**,如果 $S$ 中的所有函数在至少一半的位置上取相同的值。更确切地说,一个朋友圈是 $\{0, 1, \dots, p-1\}$ 的一个子集 $S=\{a_1, a_2, \dots, a_u\}$。它包含 $u$ 个函数 $f_{a_1}, f_{a_2}, \dots, f_{a_u}$,且它们在 $\{0, 1, \dots , p - 1\}$ 中 $v$ 个不同的位置上取值相同,并且满足 $2v \ge p$。 进一步地,我们称一个朋友圈是 **有价值的**,如果它是极大的。也就是说,任何真包含一个“有价值的朋友圈”的更大集合都不是朋友圈。 请找出并列出所有的“有价值的朋友圈”。

输入格式

输入包含多组测试数据。第一行是一个整数 $T$ ($1 \le T \le 2^{10}$),表示测试数据的组数。 对于每组测试数据,有一行包含两个整数 $p$ 和 $\mu$,其中 $p$ 是一个质数且 $p \le 100$。

输出格式

对于每组测试数据,若“有价值的朋友圈”的总数为 $F$,则输出 $F + 1$ 行。 前 $F$ 行,每行输出一个 $\{0, 1, \dots , p - 1\}$ 的子集,每个子集应以升序数字列表的形式给出。所有有价值的朋友圈应按照字典序输出。最后一行输出字符串 “END” 作为结束标志。

说明/提示

翻译由 DeepSeek V4 Pro 完成