记录编号 |
243061 |
评测结果 |
AAAAAAAAAA |
题目名称 |
平凡的数据范围 |
最终得分 |
100 |
用户昵称 |
Fmuckss |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.017 s |
提交时间 |
2016-03-29 08:39:31 |
内存使用 |
5.86 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
const int maxn = 1e5;
int n;
bool a[65][maxn];
inline LL get_num() {
LL ans = 0;
char tmp = getchar();
while(tmp < '0' || tmp > '9') tmp = getchar();
while(tmp <= '9' && tmp >= '0') {
ans = ans*10 + tmp-'0';
tmp = getchar();
}
return ans;
}
LL gauss() {
LL ans = 0;
for(int i = 1; i <= 63; i++) {
int j = 0;
while(j <= n && !a[i][j]) j++;
if(j > n & a[i][n+1]) continue;//当前枚举行没有自由元且 被选择多次后最后一位依然存在(异或不掉)
ans |= (1ll << (63-i));
for(int k = i+1; k <= 63; k++) {
if(a[k][j]) {
for(int l = 1; l <= n+1; l++) {
a[k][l] ^= a[i][l];
}
}
}
}
return ans;
}
int main() {
freopen("xor_equ.in", "r", stdin);
freopen("xor_equ.out", "w", stdout);
n = (int)get_num();
for(int i = 1; i <= n; i++) {
LL tmp = get_num();
int k = 0;
while(tmp) {
a[63-k][i] = (tmp & 1);
tmp >>= 1;
k++;
}
}
for(int i = 1; i <= 63; i++) {
a[i][n+1] = true;
}
printf("%lld", gauss());
return 0;
}