#13124. 珅泽教育CSP-J第一轮模拟考第二十九套 第 25 题

珅泽教育CSP-J第一轮模拟考第二十九套 第 25 题

二、程序阅读题(第 16—18 大题,共 18 个小题,40 分)

程序阅读(和等于异或的子数组计数)

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 10;
long long a[N], s[N], x[N];

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        scanf("%lld", &a[i]);
        s[i] = s[i - 1] + a[i];
        x[i] = x[i - 1] ^ a[i];
    }
    long long ans = 0;
    int L = 1, R = 1;
    for (; R <= n; R++) {
        while (L <= R && (s[R] - s[L - 1]) != (x[R] ^ x[L - 1])) L++;
        if (L > n) break;
        ans += R - L + 1;
    }
    cout << ans;
    return 0;
}

输入 4 / 2 5 4 6,输出为( )。

{{ select(1) }}

  • 2
  • 3
  • 4
  • 5