A5890. 「eJOI2019」塔
编程题
提高+/省选-
知识点
题目描述
**本题译自 [eJOI2019](http://ejoi2019.si/) Problem D.** ***[Tower](https://www.docdroid.net/vf2Ffdm/tower-isc-pdf)***
有一个数塔,一开始上面有一个数 $1$,接下来你可以每次选一个区间 $[l, u] (1\le l\le u\le n)$,其中 $n$ 是数塔当前有几个数,将数塔从下往上数的第 $l$ 个到第 $u$ 个求和,然后放在数塔的顶部。请你每次用尽量少的操作次数,让数塔的顶部的数为 $q$。
你总共需要回答 $T$ 组询问。
有一个数塔,一开始上面有一个数 $1$,接下来你可以每次选一个区间 $[l, u] (1\le l\le u\le n)$,其中 $n$ 是数塔当前有几个数,将数塔从下往上数的第 $l$ 个到第 $u$ 个求和,然后放在数塔的顶部。请你每次用尽量少的操作次数,让数塔的顶部的数为 $q$。
你总共需要回答 $T$ 组询问。
输入格式
第一行一个正整数 $T$,表示数据组数。
接下来每个数据一行一个正整数 $q$,表示要达到的数。
接下来每个数据一行一个正整数 $q$,表示要达到的数。
输出格式
对于每个 $q$ 按顺序输出:
- 第一行输出一个整数 $s(0\le s\le 1000)$,表示你所使用的步数。
- 接下来 $s$ 行中,每行输出两个正整数 $l, u$,表示接下来取出数的区间。
- 第一行输出一个整数 $s(0\le s\le 1000)$,表示你所使用的步数。
- 接下来 $s$ 行中,每行输出两个正整数 $l, u$,表示接下来取出数的区间。
输入输出样例
输入 #1
3 2 3 7
输出 #1
2 1 1 1 2 3 1 1 2 2 1 3 4 1 1 1 2 2 3 1 4
说明/提示
对于 $100\%$ 的数据,保证 $1\le T \le 10^3, 1\le q\le 10^{18}$。
| 测试点编号 | $T$ | $q$ |
| :-: | :-: | :-: |
| $1$ | $\le 10$ | $\le 10$ |
| $2$ | $\le 20$ | $\le 20$ |
| $3$ | $= 10^2$ | $\le 100$ |
| $4$ | $= 10^3$ | $\le 10^4$ |
| $5$ | $= 10^3$ | $\le 10^5$ |
| $6$ | $= 10^3$ | $\le 10^6$ |
| $7$ | $= 10^3$ | $\le 10^9$ |
| $8$ | $= 10^3$ | $\le 10^{12}$ |
| $9$ | | |
| $10$ | | |
| 测试点编号 | $T$ | $q$ |
| :-: | :-: | :-: |
| $1$ | $\le 10$ | $\le 10$ |
| $2$ | $\le 20$ | $\le 20$ |
| $3$ | $= 10^2$ | $\le 100$ |
| $4$ | $= 10^3$ | $\le 10^4$ |
| $5$ | $= 10^3$ | $\le 10^5$ |
| $6$ | $= 10^3$ | $\le 10^6$ |
| $7$ | $= 10^3$ | $\le 10^9$ |
| $8$ | $= 10^3$ | $\le 10^{12}$ |
| $9$ | | |
| $10$ | | |