CF1371E1 Asterism (Easy Version)
题目描述
这是该问题的简单版本。不同版本的区别在于 $n$ 和 $a_i$ 的约束条件。只有当所有版本的问题都被解决时,你才能进行 hack。
首先,Aoi 想出了如下的竞赛编程题目:
Yuzu 是一个收集糖果的女孩。最初,她有 $x$ 颗糖果。还有 $n$ 个敌人,编号为 $1$ 到 $n$。第 $i$ 个敌人有 $a_i$ 颗糖果。
Yuzu 将要确定一个排列 $P$。排列是一个由 $n$ 个 $1$ 到 $n$ 的不同整数按任意顺序组成的数组。例如,$\{2,3,1,5,4\}$ 是一个排列,但 $\{1,2,2\}$ 不是排列($2$ 在数组中出现了两次),$\{1,3,4\}$ 也不是排列(因为 $n=3$,但数组中有数字 $4$)。
之后,她将按照以下规则与敌人进行 $n$ 场决斗:
- 如果 Yuzu 拥有的糖果数不少于敌人 $P_i$ 的糖果数,她就赢得这场决斗,并获得 $1$ 颗糖果。否则,她输掉这场决斗,什么也得不到。
- Yuzu 获得的糖果会用于接下来的决斗。
Yuzu 想要赢得所有的决斗。请问有多少个合法的排列 $P$ 存在?
这个问题对 Aoi 的朋友 Akari 来说太简单且无趣。于是 Akari 基于上述想法,提出了如下问题:
我们定义 $f(x)$ 为对于整数 $x$ 的合法排列数。
给定 $n$、$a$ 和一个质数 $p \le n$。如果正整数 $x$ 满足 $f(x)$ 不能被 $p$ 整除,则称 $x$ 是“好”的。请找出所有“好”的整数 $x$。
你的任务是解决 Akari 提出的这个问题。
输入格式
第一行包含两个整数 $n$ 和 $p$,$2 \le p \le n \le 2000$。保证 $p$ 是质数(它只有两个约数 $1$ 和 $p$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,$1 \le a_i \le 2000$。
输出格式
第一行输出“好”的整数 $x$ 的个数。
第二行按升序输出所有“好”的整数 $x$。
保证“好”的整数 $x$ 的数量不超过 $10^5$。
说明/提示
在第一个测试中,$p=2$。
- 如果 $x \le 2$,Yuzu 没有合法的排列。所以 $f(x)=0$,对于所有 $x \le 2$。$0$ 能被 $2$ 整除,因此所有 $x \leq 2$ 都不是“好”的。
- 如果 $x=3$,$\{1,2,3\}$ 是 Yuzu 唯一的合法排列。所以 $f(3)=1$,因此 $3$ 是“好”的。
- 如果 $x=4$,$\{1,2,3\}$、$\{1,3,2\}$、$\{2,1,3\}$、$\{2,3,1\}$ 都是 Yuzu 的合法排列。所以 $f(4)=4$,因此 $4$ 不是“好”的。
- 如果 $x \ge 5$,所有 $6$ 个排列都是 Yuzu 的合法排列。所以 $f(x)=6$,对于所有 $x \ge 5$,因此所有 $x \ge 5$ 都不是“好”的。
所以,唯一的“好”数是 $3$。
在第三个测试中,对于所有正整数 $x$,$f(x)$ 都能被 $p=3$ 整除。
由 ChatGPT 4.1 翻译