中兴笔试题,求子区间元素运算后结果为0
生活随笔
收集整理的这篇文章主要介绍了
中兴笔试题,求子区间元素运算后结果为0
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
中兴笔试题,求子区间元素&运算后结果为0
- 题目描述
- c++代码实现
- 输入
- 输出
题目描述
给定一个长为n(1≤n≤1e51\le n\le 1e51≤n≤1e5)的数组,数组的元素为a1,a2,...,an,(1≤ai<220)a_{1},a_{2},...,a_{n} ,(1\le a_{i}<2^{20})a1,a2,...,an,(1≤ai<220),我们知道长为nnn的数组,有n∗(n+1)/2n*(n+1)/2n∗(n+1)/2个子区间,现在我想知道这n∗(n+1)/2n*(n+1)/2n∗(n+1)/2子区间中,有多少个区间的元素&运算后结果为0
c++代码实现
class Solution { public:int Deal(){zero_num = 0 ;scanf("%d",&size);vector<int> list(size);for(int i=0;i<size;++i){scanf("%d",&(list[i]));}FindSon(list,0xffffffff,0,0);return zero_num;}void FindSon(vector<int>&list,int flag,int two,int count){if(count==size){if(two==2){if(flag==0){++zero_num;}}return;}if(two==0){FindSon(list,flag,two,count+1);FindSon(list,flag&list[count],two+1,count+1);}else if(two==1){FindSon(list,flag&list[count],two,count+1);FindSon(list,flag&list[count],two+1,count+1);}else{if (flag == 0){++zero_num;}return;}} private:int zero_num;int size; };输入
3 2 1 3输出
2总结
以上是生活随笔为你收集整理的中兴笔试题,求子区间元素运算后结果为0的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 研报网站waitu.com介绍
- 下一篇: 轻松为WinRAR添加自定义的右键菜单