CF1719B Mathematical Circus
题目描述
布里亚特出现了一种新娱乐——数学马戏团!魔术师向观众展示两个数字 $n$ 和 $k$,其中 $n$ 是偶数。接着,他取出所有从 $1$ 到 $n$ 的整数,并将它们全部分成若干对 $(a, b)$(每个整数必须恰好出现在一对中),使得对于每一对,整数 $(a + k) \cdot b$ 都能被 $4$ 整除(注意,配对中数字的顺序很重要),或者告诉观众很遗憾无法完成这样的分组。
Burenka 非常喜欢这样的表演,于是她让她的朋友 Tonya 也当一次魔术师,并给了他数字 $n$ 和 $k$。
Tonya 是一只狼,众所周知,狼不会在马戏团表演,即使是数学马戏团。因此,他请求你帮忙。请你告诉他是否存在一种合适的分组方式,如果存在,请给出一种方案。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10^4$)——表示测试用例的数量。接下来是每个测试用例的数据描述。
每个测试用例的一行包含两个整数 $n$ 和 $k$($2 \leq n \leq 2 \times 10^5$,$0 \leq k \leq 10^9$,$n$ 为偶数)——表示整数的数量和被加上的数字 $k$。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,首先输出一行字符串 "YES",如果存在一种分组方式;如果不存在,则输出 "NO"。
如果存在分组方式,则在接下来的 $\frac{n}{2}$ 行中输出每一对分组,每行输出两个整数,先输出 $a$,再输出 $b$。
说明/提示
在第一个测试用例中,分组 $(1, 2)$ 和 $(3, 4)$ 是合适的,$(1, 4)$ 和 $(3, 2)$ 也是合适的分组方式。
在第二个测试用例中,$(1 + 0) \cdot 2 = 1 \cdot (2 + 0) = 2$ 不能被 $4$ 整除,因此无法分组。
由 ChatGPT 4.1 翻译