CF2277D2 Number Operating (Hard Version)

题目描述

[Harry Styles - Carla's Song](https://open.spotify.com/track/3QuRLv8zkIYH31O5VgEpmo) 这是该问题的困难版本。本版本与其他版本的区别在于,所有测试用例中 $r - l + 1$ 之和没有任何限制。 你有一个变量 $x$,初始值为 $0$。每次操作,你可以选择以下两种操作中的一种: - 操作 $1$:将 $2^k$ 加到 $x$,其中 $k$ 为在此之前连续执行操作 $1$ 的次数(特别地,如果这是第一次操作或上一次操作为操作 $2$,则 $k=0$); - 操作 $2$:将 $x$ 减去 $1$(结果可以为负数)。 对于非负整数 $n$,记 $f(n)$ 为使 $x$ 恰好等于 $n$ 所需的最少操作次数。你可以证明这总是可行的。 现在给定两个整数 $l$ 和 $r$,请计算 $\sum\limits_{n = l}^{r} f(n)$。由于答案可能非常大,请对 $998\,244\,353$ 取模后输出。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例个数 $t$ ($1 \le t \le 10^4$)。接下来的每个测试用例包含一行,含两个整数 $l$ 和 $r$($0 \le l \le r \le 10^{18}$)。

输出格式

对于每个测试用例,输出一行一个整数,即 $\sum\limits_{n = l}^{r} f(n)$ 对 $998\,244\,353$ 取模后的结果。

说明/提示

在第一个测试用例中,$l = r = 4$。初始状态 $x = 0$。一种可以达到最优的 6 步操作序列如下: 1. 执行操作 $1$,此时 $k = 0$,所以 $x$ 变为 $0 + 2^0 = 1$。 2. 再次执行操作 $1$,此时 $k = 1$,$x$ 变为 $1 + 2^1 = 3$。 3. 再次执行操作 $1$,此时 $k = 2$,$x$ 变为 $3 + 2^2 = 7$。 4. 执行操作 $2$,$x$ 变为 $7 - 1 = 6$。 5. 再次执行操作 $2$,$x$ 变为 $6 - 1 = 5$。 6. 再次执行操作 $2$,$x$ 变为 $5 - 1 = 4$。 可以证明无法用 $5$ 步或更少的操作让 $x = 4$,所以 $f(4) = 6$,故答案为 $6$。 在第二个测试用例中,$l = 1$,$r = 3$,有 $f(1) = 1$、$f(2) = 3$、$f(3) = 2$,所以答案为 $1 + 3 + 2 = 6$。 在第三个测试用例中,$l = r = 127$,连续执行 $7$ 次操作 $1$ 可以使 $x = 2^7 - 1 = 127$。可以证明无法用 $6$ 步或更少的操作得到 $x = 127$,所以 $f(127) = 7$,答案为 $7$。 由 ChatGPT 5 翻译