Advertisement
Dmaxiya

异或和之和 参考代码

Apr 4th, 2025
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long LL;
  5. const int maxn = 100000 + 100;
  6. int n;
  7. LL ans;
  8. LL num[maxn], bitSum[maxn], cnt[2];
  9.  
  10. LL solve(int dig) {
  11.     memset(cnt, 0, sizeof(cnt));
  12.     for (int i = 1; i <= n; ++i) {
  13.         bitSum[i] = bitSum[i - 1] + ((num[i] >> dig) & 1);
  14.         ++cnt[bitSum[i] & 1];
  15.     }
  16.     LL ret = 0;
  17.     for (int i = 1; i <= n; ++i) {
  18.         ret += cnt[(bitSum[i - 1] & 1) ^ 1];
  19.         --cnt[bitSum[i] & 1];
  20.     }
  21.     return ret;
  22. }
  23.  
  24. int main() {
  25. #ifdef ExRoc
  26.     freopen("test.txt", "r", stdin);
  27. #endif // ExRoc
  28.     ios::sync_with_stdio(false);
  29.  
  30.     cin >> n;
  31.     for (int i = 1; i <= n; ++i) {
  32.         cin >> num[i];
  33.     }
  34.     for (int i = 0; i <= 20; ++i) {
  35.         ans += solve(i) << i;
  36.     }
  37.     cout << ans << endl;
  38.  
  39.     return 0;
  40. }
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement