#E0027. 序列还原区间和

序列还原区间和

题目描述

有一个序列,初始时序列中只包含一个数值为 nn 的元素。

然后,这个序列会进行若干轮转换,每轮转换,对于序列中数值大于 11 的任意元素 xx,它都会转换成 33 个整数 x2\lfloor \frac{x}{2} \rfloorx mod 2x \text{ mod } 2x2\lfloor \frac{x}{2} \rfloor。(也就是说,xx 会消失,同时在 xx 所在的位置会依次加入三个整数 x2\lfloor \frac{x}{2} \rfloorx mod 2x \text{ mod } 2x2\lfloor \frac{x}{2} \rfloor;这里 x2\lfloor \frac{x}{2} \rfloor 表示 x2\frac{x}{2} 向下取整的结果,x mod 2x \text{ mod } 2 表示 xx 除以 22 的余数)

序列会一直进行转换,直至序列中所有元素的数值都 1\le 1

对于最终的序列,你需要求出:序列中第 ll 个元素到第 rr 个元素(包括第 ll 和第 rr 个元素)的数值之和。

举一些例子:

n=7n = 7,则序列的变化过程为:[ 7 ][\ 7 \ ] [ 3,1,3 ]\rightarrow [\ 3, 1, 3 \ ] [ 1,1,1,1,1,1,1 ]\rightarrow [\ 1,1,1,1,1,1,1 \ ]

n=10n = 10,则序列的变化过程为:[ 10 ][\ 10 \ ][ 5,0,5 ][\ 5, 0, 5 \ ] [ 2,1,2,0,2,1,2 ]\rightarrow [\ 2, 1, 2, 0, 2, 1, 2 \ ] [ 1,0,1,1,1,0,1,0,1,0,1,1,1,0,1 ]\rightarrow [\ 1,0,1,1,1,0,1,0,1,0,1,1,1,0,1 \ ]

输入格式

输入共一行,包含三个整数 n,l,rn, l, r,两两之间以一个空格分隔(0n<2500 \le n \lt 2^{50}, 1lr1 \le l \le rrl105r - l \le 10^5rr 不大于最终序列的长度)。

输出格式

输出一个整数,表示最终序列从第 ll 个元素到第 rr 个元素(包括第 ll 个元素和第 rr 个元素)范围内所有数字之和。

7 2 5
4
10 3 10
5

说明/提示

样例解释

样例1:

[ 7 ][\ 7 \ ] [ 3,1,3 ]\rightarrow [\ 3, 1, 3 \ ] [ 1,1,1,1,1,1,1 ]\rightarrow [\ 1,1,1,1,1,1,1 \ ]

最终序列的第 2255 个元素为:[ 1,1,1,1 ][\ 1, 1, 1, 1\ ],对应的元素和为 44

样例2:

[ 10 ][\ 10 \ ][ 5,0,5 ][\ 5, 0, 5 \ ] [ 2,1,2,0,2,1,2 ]\rightarrow [\ 2, 1, 2, 0, 2, 1, 2 \ ] [ 1,0,1,1,1,0,1,0,1,0,1,1,1,0,1 ]\rightarrow [\ 1,0,1,1,1,0,1,0,1,0,1,1,1,0,1 \ ]

最终序列的第 331010 个元素为 [ 1,1,1,0,1,0,1,0 ][\ 1, 1, 1, 0, 1, 0, 1, 0 \ ],对应的元素和为 55

数据规模与约定

  • 对于 30%30\% 的数据,n1000,rl10n \le 1000, r - l \le 10
  • 对于 60%60\% 的数据,n106,rl103n \le 10^6, r - l \le 10^3
  • 对于 100%100\% 的数据,0n<2500 \le n \lt 2^{50}, 1lr1 \le l \le rrl105r - l \le 10^5rr 不大于最终序列的长度。