CF1719B.Mathematical Circus

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

Mathematical Circus

题目描述

布里亚特出现了一种新娱乐——数学马戏团!魔术师向观众展示两个数字 nnkk,其中 nn 是偶数。接着,他取出所有从 11nn 的整数,并将它们全部分成若干对 (a,b)(a, b)(每个整数必须恰好出现在一对中),使得对于每一对,整数 (a+k)b(a + k) \cdot b 都能被 44 整除(注意,配对中数字的顺序很重要),或者告诉观众很遗憾无法完成这样的分组。

Burenka 非常喜欢这样的表演,于是她让她的朋友 Tonya 也当一次魔术师,并给了他数字 nnkk

Tonya 是一只狼,众所周知,狼不会在马戏团表演,即使是数学马戏团。因此,他请求你帮忙。请你告诉他是否存在一种合适的分组方式,如果存在,请给出一种方案。

输入格式

第一行包含一个整数 tt1t1041 \leq t \leq 10^4)——表示测试用例的数量。接下来是每个测试用例的数据描述。

每个测试用例的一行包含两个整数 nnkk2n2×1052 \leq n \leq 2 \times 10^50k1090 \leq k \leq 10^9nn 为偶数)——表示整数的数量和被加上的数字 kk

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每个测试用例,首先输出一行字符串 "YES",如果存在一种分组方式;如果不存在,则输出 "NO"。

如果存在分组方式,则在接下来的 n2\frac{n}{2} 行中输出每一对分组,每行输出两个整数,先输出 aa,再输出 bb

说明/提示

在第一个测试用例中,分组 (1,2)(1, 2)(3,4)(3, 4) 是合适的,(1,4)(1, 4)(3,2)(3, 2) 也是合适的分组方式。

在第二个测试用例中,(1+0)2=1(2+0)=2(1 + 0) \cdot 2 = 1 \cdot (2 + 0) = 2 不能被 44 整除,因此无法分组。

由 ChatGPT 4.1 翻译

样例

4
4 1
2 0
12 10
14 11
YES
1 2
3 4
NO
YES
3 4
7 8
11 12
2 1
6 5
10 9
YES
1 2
3 4
5 6
7 8
9 10
11 12
13 14

在线编程 IDE

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