天天看點

線性基 模闆

點選跳轉洛谷題解

洛谷題解這麼好

就不重新寫了

闆子如下

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[100],p[100];
void get(ll x){
	for(int i=62;i>=0;i--){
		if(!(x>>(ll)i)){
			continue;
		}
		if(!p[i]){
			p[i]=x;
			break;
		}
		x^=p[i];//這裡有點不懂
	}
}
int main(){
	int n;
	ll ans=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%lld",&a[i]);
		get(a[i]);
	}
	for(int i=62;i>=0;i--){
		if((ans^p[i])>ans){
			ans^=p[i];
		}
	}
	printf("%lld",ans);
	return 0;
}