标签:break hdu c++ code mes while bre ase size
输出样例有点问题的。。
#include<bits/stdc++.h> using namespace std; #define ll unsigned long long #define maxn 10005 ll n,a[maxn],zero,size; void gauss(){ for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++) if(a[j]>a[i])swap(a[i],a[j]); if(a[i]==0){zero=1;size=i-1;return;} for(int k=63;k>=0;k--) if(a[i] & (1ull<<k)){ for(int j=1;j<=n;j++) if(j!=i && (a[j] & (1ull<<k))) a[j]^=a[i]; break;//消完最高元后就可以退出了 } } } int main(){ int t,tt;cin>>t; for(int tt=1;tt<=t;tt++){ printf("Case #%d:\n",tt); cin>>n; zero=0;size=n; for(int i=1;i<=n;i++)cin>>a[i]; gauss(); int q;cin>>q; while(q--){ ll k,ans=0; cin>>k; if(zero)k--; if(k>= (1llu<<size)){puts("-1");continue;} for(int i=size-1;i>=0;i--) if(k & (1llu<<i)) ans^=a[size-i]; cout<<ans<<‘\n‘; } } }
标签:break hdu c++ code mes while bre ase size
原文地址:https://www.cnblogs.com/zsben991126/p/11215010.html