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 翻译