CF1845A Forbidden Integer

题目描述

给定一个整数 $n$,你需要通过取若干个整数使它们的和等于 $n$。你可以无限次地取 $1$ 到 $k$ 之间的任意整数,但不能取整数 $x$(即 $x$ 这个数完全不可用)。 你可以任意选择每个可用的整数的数量(可以为零)。你能否通过这些数的和得到 $n$? 如果有多种方案,输出任意一种即可。

输入格式

第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。 每个测试用例占一行,包含三个整数 $n, k$ 和 $x$($1 \le x \le k \le n \le 100$)。

输出格式

对于每个测试用例,第一行输出 "YES" 或 "NO",表示是否可以通过取若干个 $1$ 到 $k$ 之间、且不等于 $x$ 的整数,使它们的和等于 $n$。 如果可以,第二行输出一个整数 $m$,表示所取整数的总个数。第三行输出 $m$ 个整数,每个都在 $1$ 到 $k$ 之间且不等于 $x$,它们的和为 $n$。 如果有多种方案,输出任意一种即可。

说明/提示

对于第一个测试用例,另一种可能的答案是 $[3, 3, 3, 1]$。注意你不需要最小化所取整数的数量,也存在其他答案。 在第二个测试用例中,你只能无限次地取整数 $2$,无法用它们的和得到 $5$。 在第五个测试用例中,没有任何可用的整数,因此无法得到任何正整数的和。 由 ChatGPT 4.1 翻译