#12182. 珅泽教育CSP-J第一轮模拟考第二十二套 第 41 题

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

三、完善程序(单选题,每小题 3 分,共计 30 分)

程序(2):异或和

给定序列 ana_n,求其所有子区间异或和的和。某个区间的异或和是将区间内的所有数字进行异或运算。其中 n105n \le 10^50ai1090 \le a_i \le 10^9

提示:对每一位独立计算,对右端点扫描,并用异或前缀和辅助统计。试补全程序。

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

const int N = 1e5 + 7;
int n, a[N], cnt[2];
long long ans;

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i], ①;
    for (int bit = ②; ③; bit--) {
        cnt[0] = cnt[1] = 0;
        for (int i = 0; i <= n; i++) {
            cnt[④]++;
            ans += 1LL * ⑤;
        }
    }
    cout << ans;
}
  1. ③ 处应填( )。

{{ select(1) }}

  • bit
  • bit >= n
  • bit - 1
  • ~bit