该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
&,中文读作 与。与运算是位运算中非常重要的一种运算。规则和同学们熟知的 if 语句中的 && 很像,一句话总结,有 0 则为 0。
我们可以给出其四种运算规则:1 & 1 = 1,1 & 0 = 0,0 & 1 = 0,0 & 0 = 0。
如果我们想计算两个十进制数 x 和 y 进行与运算的结果,我们需要将两个十进制数先写为二进制数,然后上下对其进行按位计算。
举个例子,5 & 7 的计算方法如下:
5=(101)2,7=(111)2
101101111
(101)2=510
所以 5&7 的结果就是 5。
当然,编程中更加容易,你只需要写一行代码即可:
cout << (5 & 7) << endl;
现在 翁老师 给出 n 个正整数,a1,a2...an
定义 g(l,r)=al&al+1&⋯&ar,你可以将这 n 个数划分为任意段连续的子段 [1,r1],[r1+1,r2]...[rm−1+1,n]。
问 g(1,r1)+g(r1+1,r2)+...+g(rm−1+1,n) 的最小值。
输入格式
第一行一个整数 n。
接下来一行 n 个正整数。
输出格式
一行一个整数。
3
1 2 3
0
样例解释
分为 [1, 2], [3],结果为 3。
分为 [1], [2, 3],结果为 3。
分为 [1, 2, 3],结果为 0。
数据规模与约定
对于 100% 的数据,0<n≤200000,1≤ai≤109
- 子任务 1(30 分):n=2。
- 子任务 2(30 分):n≤10
- 子任务 3(40 分):没有特殊限制。