CF2247B Yet Another Constructive
题目描述
给定三个整数 $n$、$k$ 和 $m$。
我们称长度为 $n$ 且由正整数组成的数组 $a$ 是“好”的,如果其最短的非空子数组 $^*$ 的元素和能被 $m$ 整除,且这个最短的长度恰好为 $k$。
形式化地说,数组 $a$ 是“好”的需满足下列条件:
- 存在整数 $l$ 和 $r$,满足 $1 \le l \le r \le n$,$r-l+1 = k$,且 $\sum\limits_{i = l}^{r} a_i$ 能被 $m$ 整除;
- 不存在整数 $l$ 和 $r$,使得 $1 \le l \le r \le n$,$r-l+1 < k$,且 $\sum\limits_{i = l}^{r} a_i$ 能被 $m$ 整除。
请你构造一个“好”的数组 $a$ 或判断其不存在。
$^*$ 如果数组 $a$ 可以通过删除数组 $b$ 的若干(可能为零或所有)开头元素和若干(可能为零或所有)结尾元素得到,则称 $a$ 是 $b$ 的子数组。
输入格式
每组测试数据包含多组测试用例。第一行包含整数 $t$,表示测试用例数量($1 \le t \le 10^4$)。
接下来每个测试用例一行,包含三个整数 $n$、$k$ 和 $m$($1 \le k \le n \le 2 \times 10^5$,$1 \le m \le 10^9$)。
保证所有测试用例的 $n$ 之和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,如果有解,第一行输出 “YES” (不区分大小写),下一行输出 $n$ 个正整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^{18}$),即满足条件的数组 $a$。如果存在多组方案,输出任意一组均可。
如果无解,仅输出一行 “NO”。
你可以按任意大小写输出答案,例如 "yes"、"YES"、"YeS" 都被判定为正解。
说明/提示
在第一个样例中,答案可以为 $a = [1]$。唯一的非空子数组长度为 $k = 1$,其和能被 $m = 1$ 整除。
在第二个样例中,可以取 $a = [9, 17, 14, 23, 11]$。其中子数组 $[9, 17, 14]$ 的和 $9 + 17 + 14 = 40$,能被 $m = 5$ 整除。同时任意长度小于 $k = 3$ 的子数组的和都不能被 $5$ 整除,因此该方案合法。
在第四个样例中,可以证明不存在“好”的数组 $a$。
由 ChatGPT 5 翻译