A. Divide Interval

    传统题 1000ms 256MiB

Divide Interval

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

给定非负整数 llrr(满足 l<rl < r),记从 llr1r-1 顺序排列的整数序列为

S(l,r)=(l,l+1,,r2,r1) S(l, r) = (l, l+1, \ldots, r-2, r-1)

同时定义,形如

S(2ij,2i(j+1)) S(2^{i} \cdot j, 2^{i} \cdot (j+1))

的序列为 良好序列,其中 i,ji, j 为非负整数。

现给定非负整数 LLRR(满足 L<RL < R),请将序列 S(L,R)S(L, R) 分割为尽可能少的良好序列。更严格地,求满足下列条件的正整数 MM 的最小值,以及对应的分割方案,即输出非负整数对序列

(l1,r1),(l2,r2),,(lM,rM) (l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)

满足:

  • L=l1<r1=l2<r2==lM<rM=RL = l_1 < r_1 = l_2 < r_2 = \cdots = l_M < r_M = R
  • 每个序列 S(lk,rk)S(l_k, r_k)1kM1 \le k \le M)均为良好序列

可以证明,使 MM 最小的分割方案唯一存在。

输入

输入由一行组成,包含两个整数 LLRR

L R

输出

输出中第一行给出分割方案中良好序列的个数 MM。随后 MM 行,每行输出一对整数 lkl_krkr_k(中间以空格分隔),表示第 kk 个良好序列对应的区间端点。要求输出的区间按升序排列,即满足

L=l1<r1=l2<<rM=R. L = l_1 < r_1 = l_2 < \cdots < r_M = 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) S(3, 19) = (3, 4, 5, \ldots, 18)

可分割为 5 个良好序列:

  • S(3,4)=S(203,204)=(3)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(218,219)=(16,17)S(16, 18) = S(2^1 \cdot 8, 2^1 \cdot 9) = (16, 17)
  • S(18,19)=S(2018,2019)=(18)S(18, 19) = S(2^0 \cdot 18, 2^0 \cdot 19) = (18)

[Engeeker周赛 Div1] 20250328

未参加
状态
已结束
规则
IOI
题目
2
开始于
2025-3-28 0:00
结束于
2025-3-31 0:00
持续时间
2 小时
主持人
参赛人数
1