中兴笔试题,求子区间元素运算后结果为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添加自定义的右键菜单