CF1845A.Forbidden Integer

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Forbidden Integer

题目描述

给定一个整数 nn,你需要通过取若干个整数使它们的和等于 nn。你可以无限次地取 11kk 之间的任意整数,但不能取整数 xx(即 xx 这个数完全不可用)。

你可以任意选择每个可用的整数的数量(可以为零)。你能否通过这些数的和得到 nn

如果有多种方案,输出任意一种即可。

输入格式

第一行包含一个整数 tt1t1001 \le t \le 100),表示测试用例的数量。

每个测试用例占一行,包含三个整数 n,kn, kxx1xkn1001 \le x \le k \le n \le 100)。

输出格式

对于每个测试用例,第一行输出 "YES" 或 "NO",表示是否可以通过取若干个 11kk 之间、且不等于 xx 的整数,使它们的和等于 nn

如果可以,第二行输出一个整数 mm,表示所取整数的总个数。第三行输出 mm 个整数,每个都在 11kk 之间且不等于 xx,它们的和为 nn

如果有多种方案,输出任意一种即可。

说明/提示

对于第一个测试用例,另一种可能的答案是 [3,3,3,1][3, 3, 3, 1]。注意你不需要最小化所取整数的数量,也存在其他答案。

在第二个测试用例中,你只能无限次地取整数 22,无法用它们的和得到 55

在第五个测试用例中,没有任何可用的整数,因此无法得到任何正整数的和。

由 ChatGPT 4.1 翻译

样例

5
10 3 2
5 2 1
4 2 1
7 7 3
6 1 1
YES
6
3 1 1 1 1 3
NO
YES
2
2 2
YES
1
7
NO

在线编程 IDE

建议全屏模式获得最佳体验