4132: 好序列
内存限制:1024 MB
时间限制:2.000 S
评测方式:文本比较
命题人:
提交:0
解决:0
题目描述
# Divide Interval
## 题目描述
对于非负整数 $l$ 和 $r$ $(l < r)$,令 $S(l, r)$ 表示由 $l$ 到 $r-1$ 的整数按顺序排列形成的序列。此外,当且仅当一个序列可以表示为 $S(2^i j, 2^i (j+1))$ 时,其中 $i$ 和 $j$ 为非负整数,我们称这个序列为好序列。
给定非负整数 $L$ 和 $R$ $(L < R)$。将序列 $S(L, R)$ 划分为最少数量的好序列,并输出划分数量和划分方案。更具体地说,找到最小的正整数 $M$,使得存在一个非负整数对序列 $(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)$ 满足以下条件,并输出这样的 $(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)$。
- $L = l_1 < r_1 = l_2 < r_2 = \cdots = l_M < r_M = R$
- $S(l_1, r_1), S(l_2, r_2), \ldots, S(l_M, r_M)$ 都是好序列。
可以证明,使 $M$ 最小化的划分方案是唯一的。
输入
## 输入格式
输入$L$和$R$,按以下格式输出答案:
$M$
$l_1$ $r_1$
$l_2$ $r_2$
$\vdots$
$l_M$ $r_M$
输出
## 输出格式
注意,对 $(l_1, r_1), \ldots, (l_M, r_M)$ 应按升序输出。
样例输入 复制
3 19
样例输出 复制
5
3 4
4 8
8 16
16 18
18 19
提示
## 输入输出样例
### 输入样例1
```
3 19
```
### 输出样例1
```
5
3 4
4 8
8 16
16 18
18 19
```
### 输入样例2
```
0 1024
```
### 输出样例2
```
1
0 1024
```
### 输入样例3
```
3940649673945088 11549545024454656
```
### 输出样例3
```
8
3940649673945088 3940649673949184
3940649673949184 4503599627370496
4503599627370496 9007199254740992
9007199254740992 11258999068426240
11258999068426240 11540474045136896
11540474045136896 11549270138159104
11549270138159104 11549545016066048
11549545016066048 11549545024454656
```
## 数据范围与提示
【样例1说明】
$S(3,19)=(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)$ 可以被划分为以下五个好序列,这是最小可能的数量:
- $S(3,4)=S(2^0\cdot 3,2^0\cdot 4)=(3)$
- $S(4,8)=S(2^2\cdot 1,2^2\cdot 2)=(4,5,6,7)$
- $S(8,16)=S(2^3\cdot 1,2^3\cdot 2)=(8,9,10,11,12,13,14,15)$
- $S(16,18)=S(2^1\cdot 8,2^1\cdot 9)=(16,17)$
- $S(18,19)=S(2^0\cdot 18,2^0\cdot 19)=(18)$
【数据范围】
$0 \leq L < R \leq 2^{60}$,所有输入值都是整数。
## 题目来源
ABC349D