题目描述
给定一个长度为 n 的非负整数序列 a。
对于非空的非负整数集合 S={s1,s2,⋯,sk},如下定义两个函数:
- 定义 OR(S)=s1∨s2∨⋯∨sk,即集合 S 中所有元素进行按位或运算所得的结果。其中 ∨ 表示按位或运算。
- 定义 MEX(S)=min{x∈N∣x∈/S},即不在集合 S 中的最小非负整数。
对于区间 [l,r](1≤l≤r≤n),如下定义它的价值 f(l,r):
- 设 S={al,al+1,⋯,ar};
- f(l,r)=OR(S)∨MEX(S)。其中 ∨ 表示按位或运算。
你的任务是求出 ∑1≤l≤r≤nf(l,r),即所有区间的价值和。答案对 264 取模。
输入格式
本题输入量较大,请注意选择较快的输入方式。
输入的第一行包含一个正整数 n,表示序列的长度。
输入的第二行包含 n 个非负整数 a1,a2,…,an。
输出格式
输出一行一个非负整数,表示所有区间的价值之和对 264 取模后的结果。
3
0 1 2
13
4
1 0 1 3
24
10
536870912 0 1 2 3 536870912 1073741823 0 0 1
35970351152
提示
【样例 1 解释】
序列为 [0,1,2],共有 6 个区间。
以区间 [1,2] 为例,其中的数构成集合 S={0,1},有 OR(S)=1,MEX(S)=2,因此 f(1,2)=1∨2=3。
各个区间的价值分别为:
- f(1,1)=1,f(2,2)=1,f(3,3)=2;
- f(1,2)=3,f(2,3)=3;
- f(1,3)=3。
因此,所有区间的价值之和为 1+1+2+3+3+3=13。
【样例 2 解释】
序列为 [1,0,1,3],共有 10 个区间。
以区间 [1,3] 为例,其中的数为 1,0,1,构成的集合为 S={0,1}。有 OR(S)=1,MEX(S)=2,因此 f(1,3)=1∨2=3。
长度为 1 的四个区间的价值依次为 1,1,1,3,其余六个区间的价值均为 3。
因此,所有区间的价值之和为 1+1+1+3+6×3=24。
【样例 4】
见选手目录下的 func/func4.in 与 func/func4.ans。
该样例满足测试点 3 的条件限制。
【样例 5】
见选手目录下的 func/func5.in 与 func/func5.ans。
该样例满足测试点 8 的条件限制。
【样例 6】
见选手目录下的 func/func6.in 与 func/func6.ans。
该样例满足测试点 12 的条件限制。
【样例 7】
见选手目录下的 func/func7.in 与 func/func7.ans。
该样例满足测试点 17∼20 的条件限制。
【数据范围】
对于所有测试数据,保证:
- 1≤n≤2×106;
- 对于所有 1≤i≤n,均有 0≤ai<230。
| 测试点编号 |
n≤ |
ai< |
特殊性质 |
| 1 |
10 |
4 |
× |
| 2 |
100 |
210 |
^ |
| 3 |
1000 |
220 |
| 4 |
3000 |
^ |
| 5∼6 |
5000 |
230 |
| 7 |
2×104 |
^ |
✓ |
| 8 |
5×104 |
^ |
| 9∼10 |
105 |
× |
| 11 |
^ |
210 |
^ |
| 12 |
2×105 |
220 |
| 13 |
^ |
230 |
| 14 |
5×105 |
^ |
| 15 |
106 |
210 |
✓ |
| 16 |
1.5×106 |
220 |
^ |
| 17∼20 |
2×106 |
230 |
× |
特殊性质:对于所有 1≤i≤n,ai 在对应测试点规定的取值范围内独立、均匀随机生成。