CF1430C.Numbers on Whiteboard

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

Numbers on Whiteboard

题目描述

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

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

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

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

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

输入格式

第一行包含一个整数 tt(1≤t≤10001 \le t \le 1000),表示测试用例的数量。

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

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

输出格式

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

说明/提示

由 ChatGPT 4.1 翻译

样例

1
4
2
2 4
3 3
3 1

在线编程 IDE

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