该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
给定非负整数 l 和 r(满足 l<r),记从 l 到 r−1 顺序排列的整数序列为
S(l,r)=(l,l+1,…,r−2,r−1)
同时定义,形如
S(2i⋅j,2i⋅(j+1))
的序列为 良好序列,其中 i,j 为非负整数。
现给定非负整数 L 与 R(满足 L<R),请将序列 S(L,R) 分割为尽可能少的良好序列。更严格地,求满足下列条件的正整数 M 的最小值,以及对应的分割方案,即输出非负整数对序列
(l1,r1),(l2,r2),…,(lM,rM)
满足:
- L=l1<r1=l2<r2=⋯=lM<rM=R
- 每个序列 S(lk,rk)(1≤k≤M)均为良好序列
可以证明,使 M 最小的分割方案唯一存在。
输入
输入由一行组成,包含两个整数 L 和 R:
L R
输出
输出中第一行给出分割方案中良好序列的个数 M。随后 M 行,每行输出一对整数 lk 和 rk(中间以空格分隔),表示第 k 个良好序列对应的区间端点。要求输出的区间按升序排列,即满足
L=l1<r1=l2<⋯<rM=R.
样例
样例输入 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,…,18)
可分割为 5 个良好序列:
- S(3,4)=S(20⋅3,20⋅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(21⋅8,21⋅9)=(16,17)
- S(18,19)=S(20⋅18,20⋅19)=(18)