CF1151C Problem for Nazar

题目描述

Nazar 是 Kremland 王国科学中学的一名学生,以其出色的数学能力而闻名。今天,数学老师给了他一个非常困难的任务。 考虑两个无限数集。第一个集合包含所有正奇数($1, 3, 5, 7, \ldots$),第二个集合包含所有正偶数($2, 4, 6, 8, \ldots$)。在第一个阶段,老师在无尽的黑板上写下第一个集合的第一个数;在第二个阶段,写下第二个集合的前两个数;在第三个阶段,写下第一个集合的接下来的四个数;在第四个阶段,写下第二个集合的接下来的八个数,依此类推。也就是说,从第二阶段开始,每个阶段写下的数字数量是上一个阶段的两倍,并且每次切换写数的集合。 前十个被写下的数字依次为:$1, 2, 4, 3, 5, 7, 9, 6, 8, 10$。我们将这些数字从 $1$ 开始编号。 你的任务是,对于给定的整数 $l$ 和 $r$,求出编号从 $l$ 到 $r$ 的数字之和。由于答案可能很大,你需要输出其对 $1000000007$($10^9+7$)取模的结果。 Nazar 思考了很久,但没有想出解决办法。请你帮助他解决这个问题。

输入格式

第一行包含两个整数 $l$ 和 $r$($1 \leq l \leq r \leq 10^{18}$),表示你需要求和的区间。

输出格式

输出一个整数,表示答案对 $1000000007$($10^9+7$)取模后的结果。

说明/提示

在第一个样例中,答案是前 $3$ 个被写下的数字之和($1 + 2 + 4 = 7$)。 在第二个样例中,编号从 $5$ 到 $14$ 的数字依次为:$5, 7, 9, 6, 8, 10, 12, 14, 16, 18$。它们的和为 $105$。 由 ChatGPT 4.1 翻译