牛客OI赛制测试赛3毒瘤XOR

版权声明:转就转吧~~记得声明噢~~ https://blog.csdn.net/Soul_97/article/details/82694509

https://www.nowcoder.com/acm/contest/189/B

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;

int a[N],sum[N][32];
int n, q;

int main()
{
    scanf("%d",&n);

    for(int i = 1;i <= n;i ++)
        scanf("%d",&a[i]);

    for(int i = 1;i <= n;i ++){
        for(int j = 0;j < 31;j ++){

            sum[i][j] = sum[i-1][j] + ((a[i]>>j)&1);
        }
    }

    scanf("%d",&q);
    int l, r;
    while(q --){
        scanf("%d%d",&l,&r);
        int ans = 0;

        for(int i = 0;i < 31;i ++){
            if(2 * (sum[r][i] - sum[l-1][i]) < r - l + 1){
                ans |= 1<<i;
            }
        }
        cout << ans << '\n';
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Soul_97/article/details/82694509