#include<bits/stdc++.h> usingnamespace std; #define int long long constint MAXn = 1e5; constint MAXm = 64;
template <typename T> inlinevoidread(T &a){ char c;for (c = getchar(); (c < '0' || c > '9') && c != '-'; c = getchar());bool f = c == '-';T x = f ? 0 : (c ^ '0');for (c = getchar(); c >= '0' && c <= '9'; c = getchar()) {x = x * 10 + (c ^ '0');}a = f ? -x : x; } template <typename T, typename ...Argv> inlinevoidread(T &a, Argv &...argv){ read(a), read(argv...); }
inlinebooldeg(int num, int deg){ return num & (1ll << deg); } int n; int a[MAXn + 10]; signedmain(){ read(n); for (int i = 1; i <= n; ++i) { read(a[i]); } int row = 1; for (int col = MAXm - 1; ~col && row <= n; --col) { for (int i = row; i <= n; ++i) { if (deg(a[i], col)) { swap(a[row], a[i]); break; } } if (!deg(a[row], col)) continue; for (int i = 1; i <= n; ++i) { if (i == row) continue; if (deg(a[i], col)) { a[i] ^= a[row]; } } ++row; } int ans = 0; for (int i = 1; i < row; ++i) { ans ^= a[i]; } printf("%lld\n", ans); return0; }
#include<bits/stdc++.h> usingnamespace std; #define int long long constint MAXn = 1e5; constint MAXm = 64;
template <typename T> inlinevoidread(T &a){ char c;for (c = getchar(); (c < '0' || c > '9') && c != '-'; c = getchar());bool f = c == '-';T x = f ? 0 : (c ^ '0');for (c = getchar(); c >= '0' && c <= '9'; c = getchar()) {x = x * 10 + (c ^ '0');}a = f ? -x : x; } template <typename T, typename ...Argv> inlinevoidread(T &a, Argv &...argv){ read(a), read(argv...); }
inlineintdegll(int num, int deg){ return num & (1ll << deg); } inlineintmaxdegll(int num){ return63 - __builtin_clzl(num); }
int n; int num[MAXm + 10]; signedmain(){ read(n); for (int i = 1, a, mxdeg; i <= n; ++i) { read(a); while (a) { mxdeg = maxdegll(a); if (num[mxdeg]) { a ^= num[mxdeg]; } else { num[mxdeg] = a; break; } } } int ans = 0; for (int i = MAXm - 1; ~i; --i) { if (!degll(ans, i)) { ans ^= num[i]; } } printf("%lld\n", ans); return0; }