P7122 Chino 与线段树
题目描述
Chino 刚学习了一种叫做线段树的数据结构。可是她在写线段树时遇到了一个问题:她不知道该使用多大的空间,只知道线段树的叶子结点个数 $n$ 为一个在范围 $[a,b]$ 之内的正整数。
Chino 设 $f(n)$ 表示一棵 $n$ 个叶子结点的线段树所占的最大数组下标。她觉得如果她知道了
$$\sum_{n=a}^{b}f(n)$$
那么她就能够算出她需要多少使用多大的空间。所以她来请教聪明的你来帮帮她。
具体地,Chino 构建线段树的伪代码如下:
$\begin{aligned}
&\underline{\kern{300pt}}\\
&\mathbf{Function:}\ \text{Build a Segment Tree.}\\[-10pt]
&\underline{\kern{300pt}}\\[-5pt]
&\begin{array}{r|l}
1&\ \mathbf{function}\ \text{BuildSegmentTree}(x,l,r):\\
2&\qquad \mathbf{if}\ (l \ne r)\ \mathbf{then}:\\
3&\qquad\qquad m \gets \left\lfloor (l+r)/2 \right\rfloor\\
4&\qquad\qquad \text{BuildSegmentTree}(2x,l,m)\\
5&\qquad\qquad \text{BuildSegmentTree}(2x+1,m+1,r)\\
6&\qquad \mathbf{end\ if}\\
7&\ \mathbf{end\ function}\\
\end{array}\\[-13pt]
&\underline{\kern{300pt}}
\end{aligned}$
线段树所占的最大数组下标即为在 $\def\t#1{\text{#1}}\t{BuildSegmentTree}\left(1,1,n\right)$ 后所有调用的 $\def\t#1{\text{#1}}\t{BuildSegmentTree}$ 中参数 $x$ 的最大值。
输入格式
输入共二行。
第一行为一个正整数 $a$;第二行为一个正整数 $b$。其意义如题面所述。
输出格式
输出一行一个正整数,表示你的答案。
说明/提示
### 样例解释 #1
$1\sim 10$ 个叶子结点的线段树的最大下标分别为 $1,3,5,7,9,13,13,15,17,25$,求和得到 $108$。
### 测试点约束
**本题采用捆绑测试。**
对于全部数据,有 $1\le a\le b\le10^{10^6}$。
每个子任务的具体限制见下表:
| 子任务编号 | 分值 | $b\le$ | $a=b$ |
|:-:|:-:|:-:|:-:|
| 1 | 10 | $10^{10^0}$ | $\times$ |
| 2 | 10 | $10^{10^1}$ | $\times$ |
| 3 | 10 | $10^{10^2}$ | $\times$ |
| 4 | 10 | $10^{10^3}$ | $\surd$ |
| 5 | 10 | $10^{10^3}$ | $\times$ |
| 6 | 10 | $10^{10^4}$ | $\surd$ |
| 7 | 10 | $10^{10^4}$ | $\times$ |
| 8 | 10 | $10^{10^5}$ | $\surd$ |
| 9 | 10 | $10^{10^5}$ | $\times$ |
| 10 | 10 | $10^{10^6}$ | $\times$ |