#P15276. [MCO 2025] Long Binary String

    ID: 17358 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>2025Fibonacci 数列MCC/MCO(马来西亚)

[MCO 2025] Long Binary String

题目描述

一个很长的二进制字符串通过以下过程生成:

  1. 从字符串 1\tt{1} 开始。
  2. 每一秒,我们将当前字符串中的每个 1\tt{1} 替换为 10\tt{10},并将每个 0\tt{0} 替换为 1\tt{1}。

前几秒字符串的状态如下: 1,10,101,10110,101101011, 10, 101, 10110, 10110101。

令 ss 为这个过程执行了 1010010^{100} 秒后得到的字符串。你需要回答 QQ 个如下形式的查询: ss 中从第 ll 个字符到第 rr 个字符(包含两端)之间有多少个 11?

输入格式

第一行包含一个整数 QQ (1≤Q≤300 0001 \le Q \le 300\,000),表示查询的数量。

接下来的 QQ 行,每行包含两个以空格分隔的整数 l,rl, r (1≤l≤r≤10181 \le l \le r \le 10^{18}),代表查询。

输出格式

对于每个查询,输出 ss 中从第 ll 个字符到第 rr 个字符(包含两端)之间 11 的个数。

3
3 9
6 6
1 12
5
1
8

提示

注释

可以证明,该字符串的前 1212 个字符是 101101011011101101011011。

对于第一个查询,第 33 个字符到第 99 个字符之间有 55 个 1,相关的子串是 11010111101011。

对于第二个查询,第 66 个字符到第 66 个字符之间有 11 个 1,相关的子串是 11。

对于第三个查询,第 11 个字符到第 1212 个字符之间有 88 个 1,相关的子串是 101101011011101101011011。

计分

子任务 11 (77 分): Q=1Q = 1, r≤300 000r \le 300\,000

子任务 22 (1010 分): l=1l = 1, r≤300 000r \le 300\,000

子任务 33 (1313 分): r≤300 000r \le 300\,000

子任务 44 (2020 分): l=1l=1, rr 等于某个整数秒后字符串的长度

子任务 55 (1515 分): l=rl=r

子任务 66 (1515 分): Q=1Q = 1

子任务 77 (1010 分): r≤109r \le 10^9

子任务 88 (1010 分): 无额外限制

翻译由 DeepSeek 完成