CF1430C.Numbers on Whiteboard

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

Numbers on Whiteboard

题目描述

在黑板上写有数字 1,2,3,,n1, 2, 3, \dots, n(每个整数从 11nn 各出现一次)。每次操作,你可以从黑板上任意擦去两个数字 aabb,并写上一个新的整数 a+b2\lceil \frac{a + b}{2} \rceil(即 a+b2\frac{a + b}{2} 向上取整)。

你需要进行 n1n-1 次这样的操作,使得最后黑板上剩下的那个数字尽可能小。

例如,如果 n=4n = 4,最优的操作过程如下:

  1. 选择 a=4a = 4b=2b = 2,新数字为 33,黑板上变为 [1,3,3][1, 3, 3]
  2. 选择 a=3a = 3b=3b = 3,新数字为 33,黑板上变为 [1,3][1, 3]
  3. 选择 a=1a = 1b=3b = 3,新数字为 22,黑板上变为 [2][2]

显然,经过 n1n-1 次操作后,黑板上只会剩下一个数字。你的目标是让这个数字尽可能小。

输入格式

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

每个测试用例的唯一一行包含一个整数 nn2n2×1052 \le n \le 2 \times 10^5),表示初始时黑板上的整数个数。

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

输出格式

对于每个测试用例,第一行输出经过 n1n-1 次操作后黑板上可能剩下的最小数字。接下来的 n1n-1 行,每行输出两个整数 aabb,表示每次操作中被选择并擦去的两个数字。

说明/提示

由 ChatGPT 4.1 翻译

样例

1
4
2
2 4
3 3
3 1

在线编程 IDE

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