//01的异或运算每一位都是独立的运算 //以及与和或都是按位进行运算,所以每一位都是独立的。 //在这里每一位的目的是要求每一位中得到结果是1的数字最后最好。 //所以如果某一位上1多就需要填0 //0多就需要填1 //如果0和1的数量相同则无所谓,但是题目上要求输出较小的解。所以取0。 #include <bits/stdc++.h> #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; int a[100005][31]; int main() { IOS; int N, k; cin>>N; //计算一手计数1的前缀和 for (int i=1;i<=N;i++) { cin>>k; for (int j=0;j<31;j++) { a[i][j] = a[i-1][j]; if ((k>>j)&1) { a[i][j]++; } } } int q; cin>>q; for (int i=0;i<q;i++) { int l, r, ans=0; cin>>l>>r; for (int j=0;j<31;j++) { if ((a[r][j]-a[l-1][j])*2<(r-l+1)) { ans|=(1<<j); } } cout<<ans<<endl; } return 0; }